c - 使用 clock_gettime() 得到不一致的结果

标签 c pthreads shared-memory

我目前正在处理共享内存我想计算所花费的时间 线程 1 写入,线程 2 从共享内存读取。为此,我使用了:

 clock_gettime(CLOCK_REALTIME,&start)

在线程 1 中,并在从线程 2 读取之后。我再次调用:

 clock_gettime(CLOCK_REALTIME,&end) 

读取和写入所花费的时间可以通过以下方式计算:

 dt = (double) (end.tv_sec - start.tv_sec) +
((double) (end.tv_nsec - start.tv_nsec) / 1000000000.0);

但每次我运行该程序时,我都会得到不同的结果。 我做错了什么?

最佳答案

我以前用过这种测量方法,你没有做错任何事。即使您的日程安排正确,您的输出也会始终波动。

如果线程没有被另一个进程中断,我过去的开销大约是 250 微秒,但我想这也非常依赖于 CPU 能力。

对于开销:尝试用空体测量数百/数千次,检查最低(最少中断)输出以检查开销。

对于您的结果:尝试相同的方法并再次取最低值,这样您就可以接近您正在寻找的实际值。请记住,单次读写可能无法快速测量。

关于c - 使用 clock_gettime() 得到不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32457323/

相关文章:

使用此功能复制 2D 图像数据 - 为什么它有效?

c - 启动新线程后出现段错误

linux - 更改现有共享内存段大小

c - Matlab 用 mex 编译 C 文件时出错

c - 指针减法和比较规则困惑

c - 如何使用线程来提高代码的时间复杂度?

c - 为什么只有 2 个线程处于事件状态时 pthread_create() 会失败?

c - 如何以有保证的方式将虚拟地址传递给 shmat() 函数

c - shmget 系统调用 [Linux] - 分配字节数?

我可以两次访问函数返回值而不将其存储在变量中或再次调用函数吗?