2
我需要测量低延迟应用程序的消息解码延迟(3到5 us)。如何测量低延迟C++应用程序的延迟
我用下面的方法,
1. Get time T1
2. Decode Data
3. Get time T2
4. L1 = T2 -T1
5. Store L1 in a array (size = 100000)
6. Repeat same steps for 100000 times.
7. Print array.
8. Get the 99% and 95% presentile for the data set.
但我得到每次测试之间波动。有人可以解释这个原因吗? 你能否为此提出任何其他方法?
注:应用程序是紧凑循环(获得100%的CPU),并通过使用taskset commad绑定到CPU
做更多的样本,并获得平均值。在现代多任务系统中,波动是不可避免的,但波动当然也可能取决于你如何得到时间。 – 2014-11-25 11:48:52
我使用“gettimeofday”函数获取时间 – Janaka 2014-11-25 11:51:59
在linux上,我使用'clock_gettime'和'clockid_t'作为'CLOCK_PROCESS_CPUTIME_ID',因为那样只会测量特定进程占用的CPU时间。我还确保测试会修改某些原始变量,然后在计时器停止后再打印该变量,以防止编译器优化测试。 – Galik 2014-11-25 11:56:37