如何衡量在多核系统上运行的多个应用程序之间的消息延迟?

时间:2013-04-11 14:39:30

标签: c++ winapi timing

我正在开发一个由三个主要软件组件组成的系统。客户端应用程序,核心应用程序和交换应用程序都在同一服务器上运行。消息在客户端应用程序中接收,转发到核心应用程序,然后转发到相应的交换应用程序。

我想测量系统内部的消息延迟,因此在客户端,核心处收到消息时会给消息加上时间戳,以及从交换模块发送消息时的时间戳。

使用QueryPerformanceCounter()来跨多个应用程序计时事件是否合理?似乎计数器在运行多个核心的应用程序中不可靠。

2 个答案:

答案 0 :(得分:1)

如何添加一个打开客户端连接的交换应用程序,然后循环一次带有时间戳的消息,比如10000次。延迟将加起来,因此您可以有效地使用挂钟时间戳,计算结束开始并除以10000.

答案 1 :(得分:0)

正如Chad所指出的,QueryPerformanceCounter可以正常工作。来自MSDN“一般来说,[来自QPC]的性能计数器结果在多核和多处理器系统的所有处理器中都是一致的,即使在不同的线程或进程上进行测量也是如此。”只提到了几个例外...

  1. 在某些处理器上运行的pre-vista操作系统可能会违反此一致性......
  2. 不同的主题可能会被1个勾号关闭。 “术语tick是指一段时间等于1÷(从QueryPerformanceFrequency获得的性能计数器的频率)。”