Jaa*_*rus 5 .net c# performance
当我偶然发现“空类型”一章中的一段时,我正在阅读乔恩·斯基特的“ C#in depth”第二版:
令人惊讶的性能陷阱我一直以为执行一次检查要快于两次检查,但事实并非如此-至少对于我测试过的.NET版本而言。在编写一个快速基准测试时,使用“ is”对“ object []”类型的数组中的所有整数进行求和,其中只有三分之一的值实际上是装箱的整数,然后强制转换最终比使用“” 快20倍作为'运算符。
乍一看,我认为编译器可能足够聪明,可以优化使用'is'+ cast时发生的双重类型检查,但事实并非如此。用/ OPTIMIZE标志打开的用32位编译器编译的.NET 4.0代码仍然导致两个MSIL'isinst'调用。
对于在直观上应该相反的情况下,如此巨大的性能差异可能有何解释?
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |