2011-07-13 6 views
5

El acortamiento de los nombres de identificadores hace que el ejecutable resultante sea de menor tamaño ya que el código MSIL incluye todos estos nombres, excepto los variables locales. ¿Afecta la ejecución del código en el tiempo de ejecución .NET de una buena manera en términos de rendimiento, al menos en teoría? El código de máquina nativo no incluye todos esos nombres, pero interopera con .NET runtime. Así que me pregunto si tiene sentido ofuscar (es decir, acortar los nombres de los identificadores) el código MSIL para aumentar al menos un poco el rendimiento de la aplicación en tiempo de ejecución.C#. ¿El acortamiento de los nombres de los identificadores aumenta el rendimiento general del tiempo de ejecución de una aplicación?

Me sorprendió esta afirmación: "Dotfuscator mejora el rendimiento en tiempo de ejecución. Al eliminar elementos innecesarios del programa y cambiar el nombre de los identificadores a nombres pequeños, Dotfuscator puede acelerar los programas". http://msdn.microsoft.com/en-us/library/ms227226.aspx

+0

En cuanto a la afirmación: "Dotfuscator mejora el rendimiento en tiempo de ejecución. Al eliminar los elementos innecesarios del programa y cambiar el nombre de los identificadores a nombres pequeños, Dotfuscator puede acelerar los programas". Probablemente sea cierto si se eliminan los "elementos del programa innecesarios"; luego hace que el código resultante sea más pequeño y más compacto, lo que resulta en una ganancia de rendimiento. Sin embargo, dudo que este aumento en el rendimiento sea demasiado, ya que es poco probable que tenga muchos elementos del programa que no son necesarios. –

Respuesta

4

Los nombres de los identificadores son descartados por el compilador/jitter, por lo que no hará ninguna diferencia.

+0

¿Tiene sentido la afirmación relacionada con Dotfuscator (lo agregué a mi publicación original)? –

+0

@bsnote - La parte sobre la eliminación de elementos de programa innecesarios podría (reducir el consumo de memoria, por lo tanto, aumentar la velocidad). – Oded

+1

@Oded, meta meta data aún se guarda después de jits para su uso en la reflexión. Por lo tanto, aquí hay un costo de memoria y consecuencias en el rendimiento si el uso de la memoria se extiende a más páginas RAM. –

2

La primera vez que ejecuta una aplicación, el MSIL se compila con el código de máquina para esa plataforma, después de lo cual se ejecuta el código de la máquina. Entonces, teóricamente, creo que la primera compilación PUEDE verse afectada, pero el tiempo de ejecución final del código de máquina que no usa esos nombres no cambiará ni un ápice después de que se haya completado la compilación de la máquina.

Cuestiones relacionadas