tug*_*erk 8 c# performance c#-4.0
我有一个C#4.0应用程序,在这个应用程序中我有很多不必要的变量.像_foo下面代码中的变量一样:
public string Foo() {
var _foo = "foo bar";
return _foo;
}
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,像这样的情况发生在很多方法中.
很多不必要的变量(比如我在这种情况下解释的那些)会导致C#中的性能问题吗?
编辑:
如果我要删除它们,我不会问任何建议.我的问题是性能效应.事实上,该应用程序不是由我编写的,我是这个项目的新手.我刚看到并想知道它是否有任何性能.效果除了它对代码质量有影响的事实.
Dar*_*rov 24
很多不必要的变量(比如我在这种情况下解释的那些)会导致C#中的性能问题吗?
不,他们不会.
编译器足够智能,可以在发布模式下编译时删除所有不必要的东西,并优化代码:
public string Foo()
{
return "foo bar";
}
Run Code Online (Sandbox Code Playgroud)
或者更准确地说:
.method public hidebysig instance string Foo() cil managed
{
.maxstack 1
.locals init (
[0] string str)
L_0000: ldstr "foo bar"
L_0005: stloc.0
L_0006: ldloc.0
L_0007: ret
}
Run Code Online (Sandbox Code Playgroud)
与其调试模式相比,它与完全不同:
.method public hidebysig instance string Foo() cil managed
{
.maxstack 1
.locals init (
[0] string _foo,
[1] string CS$1$0000)
L_0000: nop
L_0001: ldstr "foo bar"
L_0006: stloc.0
L_0007: ldloc.0
L_0008: stloc.1
L_0009: br.s L_000b
L_000b: ldloc.1
L_000c: ret
}
Run Code Online (Sandbox Code Playgroud)
从性能的角度来看,这绝对不是你应该担心的事情.您应该担心的是代码的可读性,这个优化的代码示例似乎比您的版本更具可读性.
因此,您可以信任不断改进并能够优化此类情况的编译器.
| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |