哪个效率高?
1、
a = 1;2、
if (1 != a ) a = 1;3、
if (0 == a) a = 1;
1、
a = 1;2、
if (1 != a ) a = 1;3、
if (0 == a) a = 1;
解决方案 »
- 线程同步
- 发送字符串接收不全怎么办?
- 请问如何获取windows的所有帐号?Windows下的
- 在局域网中如何获取对方主机名,给30分
- 请问connect时报错WSAENOTSOCK (10038) 是何故?
- 请问哪里有海明威的<永别了武器的英文原版(a farewell to arms)下载?谢谢!
- 寻Visual Assist 6.0注册码?(100相送)
- 菜鸟://图的数据结构//这样的题目怎么分析//大侠指点//谢谢//
- 高手显身!!!
- 编译时LINK : fatal error LNK1104: cannot open file "..\..\..\Microsoft Visual Studio\Vc98\Lib\Winmm.lib"怎么办?
- 关于对齐函数不理解(操作PE文件)
- 怎么在VC++2008 MFC程序中添加程序启动画面
如果a=0或a=1时
都是语句1.a=1高效汇编后,
a=1 -> MOV a, 1
语句1要1个CPU周期判断语句一般是
MOV EAX, a
TEST EAX, EAX (或CMP EAX, 1)
JNZ _label
所以语句2和3至少要3个CPU周期
if (1 != a ) a = 1;
可能被优化成 a=1
JNZ xxxx
xxxx:
Mov Eax,1
if (0 == a) a = 1; cmp Eax,0
JZ xxxx
xxxx:
Mov Eax,1
就一句:
move xxx,1别的都要判断。当然是1高效了 。
现在的CPU结构里cache的应用加上流水线、乱序执行,肯定可以认为第一个最快,后面的涉及到跳转肯定更慢。LZ讨论这个问题是钻牛角尖了。