冗余表达式、指令和限定符会影响性能吗?
Do redundant expressions, directives and qualifiers impact performance?
我现在正在处理其他人的代码,ReSharper 给我很多关于冗余代码的警告,例如:
- 未使用的指令
- 数组创建表达式(
new string[]{xxx,xxx,xxx}
而不是 {xxx,xxx,xxx}
)
- 显式委托创建(
new EventHandler(xxx)
而不是 xxx
)
- 限定符(使用指令时
System.Windows.Forms.Form
而不是 Form
)
有很多代码需要处理,所以我不确定是否值得通读一遍并删除所有冗余代码。
考虑到这一点,我想问一下这些警告是否只是为了改进代码风格(为了美观),或者这些代码片段实际上执行额外的操作并稍微影响性能吗?
视情况而定。
Unused using directives don't matter.
缩写数组初始值设定项我很确定编译到相同的 CIL
显式委托创建我不太确定,但我希望性能相同
不需要的限定符我很确定编译到相同的 CIL。
但是
计算机的时间通常远不如您的时间或其他任何人阅读代码的时间重要。拿一段代码,用 System.Int32
替换所有的 int
,阅读起来需要 的时间,理解的时间需要 的时间,这些也是重要的 'performance' 指标。
编写程序必须供人们阅读,并且只能顺便供机器执行,就像一个比我聪明得多的人曾经写过的那样。
我现在正在处理其他人的代码,ReSharper 给我很多关于冗余代码的警告,例如:
- 未使用的指令
- 数组创建表达式(
new string[]{xxx,xxx,xxx}
而不是{xxx,xxx,xxx}
) - 显式委托创建(
new EventHandler(xxx)
而不是xxx
) - 限定符(使用指令时
System.Windows.Forms.Form
而不是Form
)
有很多代码需要处理,所以我不确定是否值得通读一遍并删除所有冗余代码。
考虑到这一点,我想问一下这些警告是否只是为了改进代码风格(为了美观),或者这些代码片段实际上执行额外的操作并稍微影响性能吗?
视情况而定。
Unused using directives don't matter.
缩写数组初始值设定项我很确定编译到相同的 CIL
显式委托创建我不太确定,但我希望性能相同
不需要的限定符我很确定编译到相同的 CIL。
但是
计算机的时间通常远不如您的时间或其他任何人阅读代码的时间重要。拿一段代码,用 System.Int32
替换所有的 int
,阅读起来需要 的时间,理解的时间需要 的时间,这些也是重要的 'performance' 指标。
编写程序必须供人们阅读,并且只能顺便供机器执行,就像一个比我聪明得多的人曾经写过的那样。