小编Eri*_*ith的帖子

而且OrElse也可能异​​常缓慢

我正在用VB.NET 2010编写一个计算密集型程序,我希望优化速度.如果操作的结果被分配给类级变量,我发现运算符AndAlso并且OrElse异常缓慢.例如,虽然声明

a = _b AndAlso _c  
_a = a  
Run Code Online (Sandbox Code Playgroud)

在编译的exe中,它们之间需要大约6个机器周期,单个语句

_a = _b AndAlso _c  
Run Code Online (Sandbox Code Playgroud)

大约需要80个机器周期.这里_a,_b并且_c是私有布尔变量Form1,并且所讨论的语句在实例过程中Form1,其中a是一个局部布尔变量.

我无法找到为什么单一陈述需要这么长时间.我已经使用NetReflector探索了它,直到CIL代码的水平,看起来很好:

Instruction               Explanation                              Stack  
00: ldarg.0               Push Me (ref to current inst of Form1)   Me  
01: ldarg.0               Push Me                                  Me, Me  
02: ldfld bool Form1::_b  Pop Me, read _b and push it              _b, Me  
07: brfalse.s 11          Pop _b; if false, branch to 11           Me  
09: ldarg.0 …
Run Code Online (Sandbox Code Playgroud)

vb.net performance logical-operators

15
推荐指数
1
解决办法
354
查看次数

标签 统计

logical-operators ×1

performance ×1

vb.net ×1