C#。缩短标识符名称是否会提高应用程序的整体运行时性能?

C#。缩短标识符名称是否会提高应用程序的整体运行时性能?,c#,performance,runtime,obfuscation,C#,Performance,Runtime,Obfuscation,缩短标识符名称会使生成的可执行文件的大小变小,因为MSIL代码包含除局部变量以外的所有这些名称。它是否会影响在.NET运行时以良好的方式执行代码,至少在理论上是这样?本机计算机代码不包括所有这些名称,但它可以与.NET运行时进行互操作。因此,我想知道,为了提高应用程序的运行时性能,对MSIL代码进行模糊处理(即缩短标识符名称)是否有意义 我对这句话感到惊讶:“Dotfuscator提高了运行时性能。通过删除不需要的程序元素并将标识符重命名为小名称,Dotfuscator实际上可以提高程序的速度。

缩短标识符名称会使生成的可执行文件的大小变小,因为MSIL代码包含除局部变量以外的所有这些名称。它是否会影响在.NET运行时以良好的方式执行代码,至少在理论上是这样?本机计算机代码不包括所有这些名称,但它可以与.NET运行时进行互操作。因此,我想知道,为了提高应用程序的运行时性能,对MSIL代码进行模糊处理(即缩短标识符名称)是否有意义


我对这句话感到惊讶:“Dotfuscator提高了运行时性能。通过删除不需要的程序元素并将标识符重命名为小名称,Dotfuscator实际上可以提高程序的速度。”

编译器/抖动会丢弃标识符名称,所以这不会有任何区别。

第一次运行应用程序时,MSIL将编译为该平台的机器代码,然后执行机器代码。因此,理论上,我认为第一次编译可能会受到影响,但在机器编译完成后,不使用这些名称的最终机器代码执行时间不会有任何变化。

该语句是否与Dotfuscator相关(我将其添加到我的原始帖子中)有意义吗?@bsnote-关于删除不需要的程序元素的部分可能会(减少内存消耗,从而提高速度)。@Oded,在抖动后,元数据仍然保留,以便在反射中使用。因此,这里有一个内存成本——如果内存使用溢出到更多RAM页面,则会影响性能。至于“Dotfuscator提高运行时性能。通过删除不需要的程序元素并将标识符重命名为小名称,Dotfuscator实际上可以加速程序。”如果“不需要的程序元素”可能是真的被删除——这样会使生成的代码更小、更紧凑,从而提高性能。但是,我怀疑这一性能提升是否会有多大——因为您的程序中不太可能有很多不需要的程序元素。