¿El método de conversión de base más rápido?

En este momento estoy trabajando en un proyecto que requiere que un entero se convierta en una cadena base 62 varias veces por segundo. Cuanto más rápido se complete esta conversión, mejor.

El problema es que me cuesta mucho conseguir que mis propios métodos de conversión base sean rápidosy de confianza. Si uso cadenas, generalmente es confiable y funciona bien, pero es lento. Si uso arrays de caracteres, generalmente es mucho más rápido, pero también es muy desordenado y poco confiable. (Produce corrupción en el montón, la comparación de cadenas que deben coincidir devuelve un negativo, etc.)

Entonces, ¿cuál es la forma más rápida y confiable de convertir de un entero muy grande a una clave base 62? En el futuro, planeo utilizar el código de modelo SIMD en mi aplicación, ¿es esta operación paralelizable en absoluto?

EDITAR: Esta operación se realiza varios millones de veces por segundo; tan pronto como finaliza la operación, comienza de nuevo como parte de un bucle, por lo que cuanto más rápido se ejecute, mejor. El número entero que se está convirtiendo es de un tamaño arbitrario y puede ser fácilmente tan grande como un entero de 128 bits (o más grande).

EDITAR: Esta es la función que estoy usando actualmente.

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';
}

Saqué esto de una clase que forma parte de mi aplicación, y parte del código se modifica para que tenga sentido sin su clase propietaria.

Respuestas a la pregunta(8)

Su respuesta a la pregunta