2010-01-24 93 views
1

我正在嘗試使用Intels RDTSC做一些性能測量,而且我在不同testruns期間得到的變化很奇怪。在大多數情況下,我在C 中的基準測試需要3000000 Mio週期,然而,在某些情況下,執行完全相同的執行結果可能需要 5000000,幾乎增加一倍。我試圖沒有並行運行的激烈工作負載 ,這樣我就可以獲得很好的性能評估。任何人的想法,這個巨大的時機 變化可以從哪裏來?我知道中斷和事情可能會發生,但我並沒有想到 這樣巨大的時間變化!性能評估期間的異常值

PS:我在運行Linux的奔騰處理器上運行它。

感謝您的反饋, 約翰

回答

0

this Wikipedia article,該RDTSC(時間戳計數器)不能可靠地進行基準測試多核系統中使用。沒有承諾所有內核在時間戳寄存器中具有相同的值。

在Linux上,最好使用POSIX clock_gettime函數。

+0

謝謝,但我正在單核心機器上運行我的測試 – John 2010-01-24 12:10:27

2

我想答案是:

試圖有沒有強烈的工作量 並行

運行你在一個現代操作系統在這個控制能力不夠。

0

您必須考慮大多數現代處理器的緩存。如果您測量了長時間的運行時間,也許另一個進程會導致程序的緩存內容被刪除。正如Henk指出的那樣,在現代操作系統中發生很多事情,您無法控制太多。