Pregunta

Necesito escribir software que haga muchas matemáticas. Principalmente será la multiplicación de matriz con enteros para calcular DCT. ¿Cuánto más rápido debo esperar que el código se ejecute en C nativo en comparación con VB .NET? Factor de 2, factor de 10, factor de 1000 ...? ¿Alguien ha probado y recopilado estadísticas sobre esto?

¿Fue útil?

Solución

Puede agregar un nuevo atributo de imagen Slideshow_Image al conjunto de atributos de productos. Este post en Pixafy explica cómo.Esto le permitiría recuperar todas las imágenes para la colección de productos SlideHow por búsqueda de imágenes en el atributo slideshow_image .

Otros consejos

El código .NET se compila con el código nativo antes de la ejecución, por lo que no debe ser más lento que el código nativo en general. Esperaría un factor <10.

Además, las técnicas de optimización adaptativa perfilan el código a medida que se ejecuta, obteniendo más información que un compilador estático típico. Entonces, el JIT puede tomar decisiones más informadas para más optimizaciones

VB es 93.7% tan rápido que C. Si Eliges el escenario correcto.

En realidad, si su 'C nativo' incluye llamadas regulares a Malloc () y Free (), cualquier tipo de lenguaje recolectado de gargantas como VB.NET va a ejecutar literalmente círculos a su alrededor. GC puede ser 10 veces más rápido que los mallocs en sus bucles internos.

Si se descompone y usa C, intente reutilizar las estructuras que declaró una vez en lugar de hacer otras nuevas, para evitar este problema. Esto puede ser beneficioso incluso en VB si su solución se presta a ella. Sin embargo, será más difícil programar y GC es muy rápido.

En cuanto a los límites/verificaciones de desbordamiento, si la velocidad es importante y las pruebas han revelado que no suceden, y no está arriesgando la vida o millones de un error o abogan, son una pérdida de tiempo. Pero si no puede deshacerse de ellos, es probable que su tiempo sea aún más valioso en un idioma con el que puede programar más rápidamente.

Si espera un tamaño y uso serios, paga para dividir la tarea con un programa de control y almacenar las 'definiciones de tareas' asignadas en un directorio compartido con un archivo por solucionador de tareas o una base de datos. Luego puede ejecutar un solucionador por procesador (2 por CPU HT) o computadoras de red. Esté cansado de las estructuras de cola: es difícil 'marcar atómicamente los datos de marcar y get-data-if-no-taken'. Sabes cuántos solucionadores de tareas vas a comenzar. Hice esto con una utilidad de imagen que desarrollé, fue mucho más fácil de lo esperado, y crió la versión anterior. Además, si usa múltiples procesos Con un dominio de problema adecuadamente dividible, evita la carga de programación leve a significativa de la lectura múltiple. O convencer a sus compañeros de trabajo de que sus aparatos ortopédicos están en el lugar correcto. Paz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top