当前位置:  开发笔记 > 编程语言 > 正文

定时器来衡量延迟

如何解决《定时器来衡量延迟》经验,为你挑选了1个好方法。

在通过TCP测量任何协议中的网络延迟(接收时间ack - 发送时间msg)时,您建议使用什么计时器?为什么?它有什么分辨率?还有什么其他优点/缺点?

可选:它是如何工作的?

可选:你不使用什么计时器,为什么?

我主要关注Windows/C++解决方案,但如果您想对其他系统发表评论,请随意这样做.

(目前我们使用GetTickCount(),但它不是一个非常准确的计时器.)



1> grieve..:

这是我的答案副本:C++ Timer函数以纳秒为单位提供时间

对于Linux(和BSD),您希望使用clock_gettime().

#include 

int main()
{
   timespec ts;
   // clock_gettime(CLOCK_MONOTONIC, &ts); // Works on FreeBSD
   clock_gettime(CLOCK_REALTIME, &ts); // Works on Linux
}

对于Windows,您要使用QueryPerformanceCounter.QPC上有更多内容

显然在某些芯片组上存在QPC 的已知问题,因此您可能希望确保没有这些芯片组.此外,一些双核AMD也可能导致问题.请参阅sebbbi的第二篇文章,其中他说:

QueryPerformanceCounter()和QueryPerformanceFrequency()提供了更好的分辨率,但有不同的问题.例如在Windows XP中,所有AMD Athlon X2双核CPU都会"随机"返回任一核心的PC(PC有时会向后跳跃),除非您专门安装AMD双核驱动程序包来解决问题.我们还没有注意到任何其他具有类似问题的双+核CPU(p4 dual,p4 ht,core2 dual,core2 quad,phenom quad).

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有