代码1
- Assembly code
00549A0C mov eax,dword ptr [esi+4Ch] 00549A0F mov ecx,eax 00549A11 and ecx,14h 00549A14 mov dword ptr [esp+34h],ecx 00549A18 mov ecx,eax 00549A1A and ecx,8 00549A1D and eax,0FFFFFFE3h 00549A20 mov dword ptr [esp+30h],ecx 00549A24 mov dword ptr [esi+4Ch],eax
代码2
- Assembly code
00549983 mov eax,dword ptr [esi+4Ch] 00549986 test al,14h 00549988 je 0054998E 0054998A mov dword ptr [esp+34h],ecx 0054998E test al,8 00549990 je 00549996 00549992 mov dword ptr [esp+30h],ecx 00549996 and eax,0FFFFFFE3h 00549999 mov dword ptr [esi+4Ch],eax
代码2是多了两个跳转,想去掉跳转,修改了下程序,发现编译器生成的代码变成了代码1的样子。跳转去掉了,可是多了条指令。到底哪个效率高呢
------解决方案--------------------------------------------------------
控制相关会影响指令的乱序调度,当然会影响处理器的效率。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
实现功能不一样,没法比。非比较的话,2要比1快一些。