相关疑难解决方法(0)

更快相当于gettimeofday

在尝试构建一个对延迟敏感的应用程序时,需要每秒发送100条消息,每条消息都有时间字段,我们要考虑优化gettimeofday.首先想到的是rdtsc基于优化.有什么想法吗 ?还有其他指针吗?返回的时间值所需的准确度以毫秒为单位,但如果该值偶尔与接收器不同步1-2毫秒,则不是很大.试图比62纳秒的gettimeofday做得更好

c optimization clock gettimeofday

25
推荐指数
3
解决办法
3万
查看次数

任何人都可以理解gettimeofday是如何工作的?

根据此页面,gettimeofday是一个x86-86的系统调用(只需gettimeofday在框中搜索):

int gettimeofday(struct timeval *tv, struct timezone *tz);
Run Code Online (Sandbox Code Playgroud)

我认为迪斯应该很容易,只需准备两个指针并调用相关的syscall.

但它的disas做得更多:

(gdb) disas gettimeofday
Dump of assembler code for function gettimeofday:
0x00000034f408c2d0 <gettimeofday+0>: sub    $0x8,%rsp
0x00000034f408c2d4 <gettimeofday+4>: mov    $0xffffffffff600000,%rax
0x00000034f408c2db <gettimeofday+11>: callq  *%rax
0x00000034f408c2dd <gettimeofday+13>: cmp    $0xfffff001,%eax
0x00000034f408c2e2 <gettimeofday+18>: jae    0x34f408c2e9 <gettimeofday+25>
0x00000034f408c2e4 <gettimeofday+20>: add    $0x8,%rsp
0x00000034f408c2e8 <gettimeofday+24>: retq   
0x00000034f408c2e9 <gettimeofday+25>: mov    0x2c4cb8(%rip),%rcx        # 0x34f4350fa8 <free+3356736>
0x00000034f408c2f0 <gettimeofday+32>: xor    %edx,%edx
0x00000034f408c2f2 <gettimeofday+34>: sub    %rax,%rdx
0x00000034f408c2f5 <gettimeofday+37>: mov    %edx,%fs:(%rcx)
0x00000034f408c2f8 <gettimeofday+40>: or     $0xffffffffffffffff,%rax
0x00000034f408c2fc <gettimeofday+44>: jmp …
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 system-calls

8
推荐指数
2
解决办法
4560
查看次数

标签 统计

assembly ×1

c ×1

clock ×1

gettimeofday ×1

optimization ×1

system-calls ×1

x86-64 ×1