|
|
1
95
为什么不看看你到底得到了什么?
下面是调试生成中得到的IL:
下面是JIT在debug中运行时生成的程序集:
现在,如果我注释掉try-finally和return,我将从JIT获得几乎相同的程序集。您将看到的区别是跳转到finally块和一些代码,以确定finally执行后的去向。所以你说的是微小的差异。在release中,跳转到finally将得到优化的out-braces是nop指令,因此这将成为跳转到下一条指令,这也是nop-这是一个简单的窥视孔优化。pop eax和jmp eax同样便宜。
|
|
|
2
53
所以假设有一个开销。你要停止使用
IMO性能指标只有在您可以在不同选项之间进行选择时才是相关的。我看不出你怎么能得到
|
|
|
3
28
我有一个快速的个人资料应用程序,我刚才做了测试,在一个紧密的循环,它真的没有增加任何执行时间。
我会再发一次,但很简单;只要运行一个紧密的循环来做一些事情,用
|
|
|
4
11
让我们把一些基准数字放在这里。这个基准表明,实际上,try/finally的时间与调用空函数的开销一样小(可能更好的说法是:“跳转到下一条指令”,正如IL专家上面所说)。
结果:33,33,32,35,32 63,64,69,66,66 (毫秒,请确保已启用代码优化) 1000万 循环。 每试一次/最后一次,我们说的是0.033/10000000=
|
|
|
5
6
安德鲁·巴伯说的话。除非抛出异常,否则实际的TRY/CATCH语句不会增加/忽略不计的开销。最后没有什么特别的。您的代码总是在try+catch语句中的代码完成后跳到finally |
|
|
6
6
|