La semana pasada escribí algunas líneas de código en C# para iniciar un archivo de texto grande (300,000 líneas) en un diccionario. Le tomó diez minutos escribir y lo ejecutó en menos de un segundo.C++ gestión de memoria de cadena
Ahora estoy convirtiendo ese pedazo de código en C++ (porque lo necesito en un antiguo objeto de C++ COM). He pasado dos días hasta aquí. :-(Aunque la diferencia de productividad es impactante por sí misma, es el rendimiento que necesitaría algunos consejos.
Tarda siete segundos en cargarse, y lo que es peor: lleva exactamente ese tiempo liberar todo CStringWs después. esto no es aceptable, y debe encontrar una manera de aumentar el rendimiento.
¿hay alguna posibilidad de que pueda destinar esta cantidad de cadenas sin ver esta degradación performace tan horrible?
Mi conjetura en este momento es que tendré que rellenar todo el texto en una gran matriz y luego dejar que mi tabla hash apunte al comienzo de cada cadena dentro de esta matriz y soltar las cosas de CStringW.
Pero antes de eso, ¿algún consejo de ustedes expertos C++ por ahí?
EDIT: Mi respuesta a mí mismo se da a continuación. Me di cuenta de que esa es la ruta más rápida para mí, y también paso en lo que I considere en la dirección correcta - hacia un código más administrado.
Realmente necesita mostrarnos el código que está utilizando ahora, su descripción es demasiado vaga como para dar su opinión. –
Definitivamente debe proporcionar más información sobre su estructura de datos ... –
Antes de estar familiarizado con .Net, la transición de C++ a C# - sin tener idea de cómo los marcos (en mi caso, el VCL) eran similares o diferentes - habría sido tan desafiante como a la inversa. No hace falta culpar a C++ por hacer su pregunta. – overslacked