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