变量名称长度对性能C#有影响吗?

Mad*_*Boy 18 c# performance

我一直想知道在WinForms C#中使用长描述性变量名是否对性能有影响?我问这个问题,因为在AutoIt v3(解释语言)中,提出的是,使用短名称变量aa而不是veryLongVariableName更快(当程序大于5班轮时).我想知道它在C#中是否相同?

And*_*zub 22

不,不.编译器实际上不保存原始变量名,您可以使用反汇编程序查看任何已编译程序集的IL代码.

  • *删除本地*变量名称.*会员*变量名称被保留. (9认同)
  • 这很奇怪,因为当我用反射器查看我的源.exe时,会显示我用过的变量名. (4认同)
  • 编译器还会创建实际存储变量名称和代码的.pdb文件.但是这些文件仅用于调试,而不是运行.NET应用程序.也许Reflector也可以读取这些文件. (2认同)

Han*_*ant 17

它是编译器和解释器之间的关键区别.解释器在解释代码时执行标识符名称查找.如果该名称查找发生在执行多次的循环内,则该查找所需的时间可能很重要.更长的名字需要更多时间.

C#编译器在两个不同的阶段消除了标识符名称.在将源代码编译为IL时,局部变量的名称将被擦除并替换为堆栈帧偏移.命名空间和类型名称仍存在于程序集中.JIT编译器会删除它们,将其替换为字段的方法和数据偏移的代码偏移.标识符名称的长度在这里无关紧要,查询只发生一次.

在解释器中消除名称查找的费用并不难.一个像样的解释器标记源代码,本质上是一个预编译步骤,以使解释器更有效.这样的解释器也不会有长标识符名称的减速问题.