未使用的方法和属性对库或可执行文件的影响

Ric*_*ick 5 .net c# code-generation

我正在为C#(.NET)创建一个源代码生成器.生成永不被调用的属性或方法会导致我的代码运行得更慢吗?如何为不使用的库插入"using"语句?

我假设编译器足够聪明,不能构建未使用的"using"语句,但是它没有办法知道属性和方法,因为它们可以插入供外部应用程序使用.

Han*_*ant 6

编译器已足够智能,只能列出实际使用的最终可执行文件中的引用程序集.无需摆弄程序集引用或使用指令.

JIT编译器只会为实际调用的方法生成代码.因此,由于从未使用过的代码,您将不会有任何机器代码或编译时间开销.

您的可执行映像由CLR通过内存映射文件引用.只有在CLR使用DLL中的实际内容时才会使用RAM.这取决于您使用的方法的IL如何通过图像分布.有合理的可能性,因为JIT编译器从不引用IL,图像数据也不会被分页到RAM中.换句话说,您将丢失一些虚拟内存空间,但不会占用相应数量的RAM.

如果您的DLL名称很强并存储在不受信任的位置,那么由于文件较大,热启动时间会稍长.


Eri*_* J. 5

未使用的方法会使可执行文件略大.加载需要更长的时间,并且会消耗更多的系统内存.

如果应用程序在内存受限的环境中运行,您可能会看到性能略有下降.

除此之外,您不应该看到性能下降.

"using"语句只允许您在源代码中编写更短版本的类名.它们不会影响文件大小或执行速度.

有第三方链接器可以从最终的.EXE中删除未引用的方法.