Ric*_*ick 5 .net c# code-generation
我正在为C#(.NET)创建一个源代码生成器.生成永不被调用的属性或方法会导致我的代码运行得更慢吗?如何为不使用的库插入"using"语句?
我假设编译器足够聪明,不能构建未使用的"using"语句,但是它没有办法知道属性和方法,因为它们可以插入供外部应用程序使用.
编译器已足够智能,只能列出实际使用的最终可执行文件中的引用程序集.无需摆弄程序集引用或使用指令.
JIT编译器只会为实际调用的方法生成代码.因此,由于从未使用过的代码,您将不会有任何机器代码或编译时间开销.
您的可执行映像由CLR通过内存映射文件引用.只有在CLR使用DLL中的实际内容时才会使用RAM.这取决于您使用的方法的IL如何通过图像分布.有合理的可能性,因为JIT编译器从不引用IL,图像数据也不会被分页到RAM中.换句话说,您将丢失一些虚拟内存空间,但不会占用相应数量的RAM.
如果您的DLL名称很强并存储在不受信任的位置,那么由于文件较大,热启动时间会稍长.
未使用的方法会使可执行文件略大.加载需要更长的时间,并且会消耗更多的系统内存.
如果应用程序在内存受限的环境中运行,您可能会看到性能略有下降.
除此之外,您不应该看到性能下降.
"using"语句只允许您在源代码中编写更短版本的类名.它们不会影响文件大小或执行速度.
有第三方链接器可以从最终的.EXE中删除未引用的方法.