.NET合并的程序集的性能

7
我有两个.NET库:“Foo.Bar”和“Foo.Baz”。其中,“Foo.Bar”是自包含的,而“Foo.Baz”引用了“Foo.Bar”。
假设我执行以下操作:
1. 使用ILMerge将“Foo.Bar.dll”与“Foo.Baz.dll”合并为“Foo1.dll”。 2. 创建一个新解决方案,其中包含“Foo.Bar”和“Foo.Baz”的全部内容(因为我可以访问它们的源代码),并将其编译为“Foo2.dll”。
当从外部项目使用它们的功能时,Foo1.dll和Foo2.dll的性能是否会有差异?如果有,这种性能差异有多大,并且它是一次性的(在加载时)还是持续存在的差异?这两种方法有什么其他优缺点?
1个回答

3

我相信它不会产生完全相同的IL,但它会非常接近,我无法想象两种方法之间有任何明显的差异。除了ILMerge方法可能更方便和可维护外,我认为两种解决方案都会有相同的结果。


为什么它不能产生完全相同的IL呢?为什么ILMerge必须发出新的IL呢? - Matthew Olenik
大部分的IL将是相同的,但ILMerge确实会进行一些转换。其中一些是可配置的,例如合并类型定义。有些与程序集级别的属性有关。我认为它可以改变类型的可见性等。 - Josh
请注意,这些都不应该影响汇编的性能。 - Josh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接