2011-01-19 5 views
8

Del blog de Eric Lippert The truth about value types está claro que el número de registros puede tener un gran impacto en el rendimiento del código. ¿Cuáles son los criterios de código que más se benefician de la mayor cantidad de registros en los sistemas x64? ¿Hay algún buen ejemplo?¿Qué escenarios maximizan el impacto en el rendimiento del mayor número de registros en un sistema x64 para el código C#?

Tengo claro que el recuento de registros no es el único y ni siquiera el aspecto más importante de una plataforma x64, pero si existen tales criterios, la plataforma en la que planeamos ejecutar nuestro código tendrá un impacto sobre cómo escribimos nuestro código?

+0

Para mí, siempre debe considerar el aspecto del rendimiento. No estoy seguro de que podamos maximizar el rendimiento fácilmente con el registro porque usamos la máquina virtual .net. Creo que depende de la implementación de la máquina virtual. – ykatchou

+0

Es una buena pregunta, creo que si compilamos para AnyCPU, el código IL se compilará en el momento de la ejecución de una manera que dependería de la plataforma de ejecución. –

+0

Incluso los procesadores modernos solo tienen alrededor de 16 registros por núcleo, lo cual es una cifra realmente baja cuando se compara con el número de variables asignadas por las aplicaciones hoy en día. Por lo tanto, creo que no podrá "optimizar" su código C# para aprovechar algunos registros más disponibles en los sistemas x64. Además, aunque debe tener en cuenta el rendimiento durante la codificación, debería preocuparse más por la calidad del código (legibilidad, mantenibilidad, etc.) porque puede reducir mucho los costos de desarrollo y solo apuntar al rendimiento en las áreas críticas de su aplicación. . –

Respuesta

1

La respuesta corta a su pregunta es definitivamente - no.

El mayor beneficio cuando se programa en C# (o Java) es que no necesita preocuparse por cosas como ubicación de almacenamiento o punteros sucios.
El CLR no está diseñado para aplicaciones en tiempo real de todos modos o en otras palabras para darle ese tipo de control sobre el hardware, está diseñado para ser una herramienta de desarrollo rápido de aplicaciones y ahí es donde está su fuerza, por supuesto en el precio de no poder controlar los comportamientos de bajo nivel.

No hay criterios de codificación para beneficiarse en general, pero hay excepciones como usar el generador de cadenas en lugar de escribir string_Result = string_X + string_Y + string_Z en una iteración.
pero esto está más relacionado con la codificación correcta o la codificación optimizada independientemente de CLI o C#.

Cuestiones relacionadas