2010-04-22 29 views
7

Tengo dos bibliotecas .NET: "Foo.Bar" y "Foo.Baz".
"Foo.Bar" es autónomo, mientras que "Foo.Baz" hace referencia a "Foo.Bar".Desempeño de ensamblados .NET ILMerged

Suponiendo que hacer lo siguiente:

  • Uso ILMerge para fusionar "Foo.Bar.dll" con "Foo.Baz.dll" en "Foo1.dll".
  • Cree una nueva solución que contenga la entiridad de "Foo.Bar" y "Foo.Baz" (ya que tengo acceso a su código fuente), y compile esto en "Foo2.dll".

¿Habrá alguna diferencia en el rendimiento de Foo1.dll y Foo2.dll al usar su funcionalidad de un proyecto externo? De ser así, ¿qué tan significativa es esta diferencia de rendimiento, y es una diferencia única (en carga?) O continua? ¿Hay alguna otra ventaja o desventaja con cualquier enfoque?

Respuesta

3

Estoy seguro de que no produciría exactamente la misma IL, pero sería extremadamente estrecha y no puedo imaginar ninguna diferencia apreciable entre los dos métodos. Aparte del hecho de que el método ILMerge es probablemente más conveniente y fácil de mantener, creo que ambas soluciones tendrían el mismo resultado.

+0

¿Por qué no producir exactamente la misma IL? ¿Por qué ILMerge tiene que emitir nueva IL? –

+0

La mayor parte de IL será la misma, pero ILMerge realiza algunas transformaciones. Parte de esto es configurable como fusionar definiciones de tipo. Parte de esto tiene que ver con los atributos de nivel de ensamblaje. Creo que puede cambiar la visibilidad del tipo, etc. – Josh

+0

Ninguno de los cuales debería afectar el rendimiento del ensamblaje, piénselo. – Josh

Cuestiones relacionadas