Método de conversão de base mais rápida?

No momento, estou trabalhando em um projeto que requer que um inteiro seja convertido em uma string de base 62 vezes por segundo. Quanto mais rápido essa conversão for concluída, melhor.

O problema é que estou tendo dificuldade em conseguir que meus métodos de conversão base sejam rápidose confiável. Se eu uso strings, geralmente é confiável e funciona bem, mas é lento. Se eu usar matrizes de caracteres, geralmente é muito mais rápido, mas também é muito confuso e não confiável. (Produz corrupção de pilha, comparação de cadeias que devem corresponder a um negativo, etc.)

Então, qual é a maneira mais rápida e confiável de converter um número inteiro muito grande em uma chave base 62? No futuro, pretendo utilizar o código de modelo SIMD em minha aplicação, então esta operação é paralelizável?

EDIT: esta operação é executada vários milhões de vezes por segundo; Assim que a operação termina, ela começa novamente como parte de um loop, então quanto mais rápido ele for executado, melhor. O inteiro que está sendo convertido é de tamanho arbitrário e pode facilmente ser tão grande quanto um inteiro de 128 bits (ou maior).

EDIT: esta é a função que estou usando no momento.

char* charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int charsetLength = (int)(strlen(charset));

//maxChars is an integer specifying the maximum length of the key
char* currentKey = new char[maxChars];

void integerToKey(unsigned long long location)
{
    unsigned long long num = location;
    int i = 0;

    for(; num > 0; i++)
    {
            currentKey[i] = charset[num % (charsetLength)];
            num /= charsetLength + 1;
    }

    currentKey[i + 1] = '\0';
}

Eu tirei isso de uma classe que faz parte do meu aplicativo, e parte do código é modificado para que faça sentido sem sua classe proprietária.

questionAnswers(8)

yourAnswerToTheQuestion