Escribí parte de un programa que realiza un trabajo pesado con cadenas en C#. Inicialmente elegí C# no solo porque era más fácil usar las estructuras de datos de .NET, sino también porque necesito usar este programa para analizar unos 2-3 millones de registros de texto en una base de datos, y es mucho más fácil conectarme a bases de datos usando C# .Mejoras en el rendimiento al volver a escribir el código C# en C/C++
Hubo una parte del programa que ralentizaba todo el código, y decidí reescribirla en C usando punteros para acceder a todos los caracteres de la cadena, y ahora la parte del código que tardó unos 119 segundos en analizar 10,000,000 cadenas en C# toma el código C solo 5 segundos! El rendimiento es una prioridad, entonces estoy considerando volver a escribir todo el programa en C, compilarlo en un dll (algo que no sabía cómo hacer cuando comencé a escribir el programa) y usar DllImport desde C# para usar sus métodos para trabajar con las cadenas de la base de datos.
Dado que reescribir todo el programa tomará algún tiempo, y dado que el uso de DllImport para trabajar con cadenas de C# 's requiere de clasificación y tales cosas, mi pregunta es la voluntad de las mejoras de rendimiento de manejo de cadenas más rápido de la DLL de C son mayores que el impacto en el rendimiento de tener para ordenar repetidamente cadenas para acceder al dll C desde C#?
Creo que debería mostrar cómo se manejan las cadenas en C#. Si bien es cierto que los programas C deberían ser más rápidos, también es cierto que no debería haber una diferencia de rendimiento ** ENORME ** entre los dos. –
Probablemente pueda acelerar su código C# original usando StringBuilder. Difícil de decir sin ver ningún código. – Henrik
Hay más de una formas de implementar un programa en C#. ¿Has elegido la implementación más eficiente? –