我一直想知道在WinForms C#中使用长描述性变量名是否对性能有影响?我问这个问题,因为在AutoIt v3(解释语言)中,提出的是,使用短名称变量aa
而不是veryLongVariableName
更快(当程序大于5班轮时).我想知道它在C#中是否相同?
And*_*zub 22
不,不.编译器实际上不保存原始变量名,您可以使用反汇编程序查看任何已编译程序集的IL代码.
Han*_*ant 17
它是编译器和解释器之间的关键区别.解释器在解释代码时执行标识符名称查找.如果该名称查找发生在执行多次的循环内,则该查找所需的时间可能很重要.更长的名字需要更多时间.
C#编译器在两个不同的阶段消除了标识符名称.在将源代码编译为IL时,局部变量的名称将被擦除并替换为堆栈帧偏移.命名空间和类型名称仍存在于程序集中.JIT编译器会删除它们,将其替换为字段的方法和数据偏移的代码偏移.标识符名称的长度在这里无关紧要,查询只发生一次.
在解释器中消除名称查找的费用并不难.一个像样的解释器标记源代码,本质上是一个预编译步骤,以使解释器更有效.这样的解释器也不会有长标识符名称的减速问题.
归档时间: |
|
查看次数: |
5645 次 |
最近记录: |