Mi aplicación necesita convertir valores dobles a char * para escribir en una tubería que solo acepta caracteres. Las formas habituales de hacerlo son utilizando la función sprintf() o utilizando ostringstream desde el archivo de encabezado iomanip.h.Conversión de doble a char * en C++ con alto rendimiento
Resulta que ambos tienen muy mal rendimiento. Y mi aplicación necesita hacer esta conversión tan a menudo que se convierte en el principal cuello de botella.
¿Hay alguna otra función que pueda usar? ¿Qué lógica puedo usar para escribir una función de conversión eficiente? Lo único que he logrado llegar hasta ahora es sacar cada dígito individual usando operaciones de división y mod, y agregar estos dígitos a un char * para obtener el doble valor completo. Sin embargo, esto no parece ser un buen enfoque, y probablemente tendrá un mal rendimiento.
Gracias de antemano por su opinión.
EDITAR: Existe cierta confusión sobre cómo se utilizará el carácter *. El char * será un argumento para la función fwrite que escribe en una tubería.
¿Qué quiere decir con "tubería acepta solo caracteres"? ¿Puedes enviar/escribir bytes? ¿El formato en el que los datos se destinan a este asunto de la tubería (debe ser legible para el ser humano) o lo vuelves a convertir en otro lado? – dbrank0
Lea esto: http://stackoverflow.com/questions/3173056/why-does-dtoa-c-contain-so-much-code – nhahtdh
¿Por qué no bitcast a un int y codifica eso en hexadecimal y envía eso (luego en el otro lado convierte de nuevo) –