|
我的错。。。这种地方不应该这样子做的。。。
但是这两种sleep在理论上是相等的
---------------------------------------
TDM-GCC-64 5.1.0下
我的Sleep生成的ASM:- _Z5sleepj:
- .LFB4:
- pushq %rbp
- .seh_pushreg %rbp
- pushq %rbx
- .seh_pushreg %rbx
- subq $40, %rsp
- .seh_stackalloc 40
- leaq 128(%rsp), %rbp
- .seh_setframe %rbp, 128
- .seh_endprologue
- movl %ecx, -64(%rbp)
复制代码 你的Sleep生成的ASM:- _Z5sleepj:
- .LFB4:
- pushq %rbp
- .seh_pushreg %rbp
- movq %rsp, %rbp
- .seh_setframe %rbp, 0
- subq $32, %rsp
- .seh_stackalloc 32
- .seh_endprologue
- movl %ecx, 16(%rbp)
- call clock
- addl %eax, 16(%rbp)
复制代码 只截取关键部分
可以看到你的用call调用clock
我的用了lea调用
在这种对于时间精度要求很高的场合自然就分出问题
|
|