2012-11-01 35 views
3

我需要找出執行單條指令或幾條指令所需的時間,並以毫秒爲單位打印出來。有人可以分享這個小代碼片段。C程序測量指令的執行時間

謝謝..我需要用這個度量來執行我的項目中的一些指令。

+0

指令?以毫秒爲單位?我想這是你正在談論的一個古老的計算機。你可以用秒錶來測量它... – valdo

+0

非常有趣...但是,謝謝 – Romaan

+1

另一種方法是讀取編譯器生成的彙編代碼(使用gcc試試-S開關),然後查找時鐘週期數目標處理器文檔中的每個彙編指令。 – potrzebie

回答

3

一條指令將花費比1毫秒更短的時間執行。如果你試圖測量多條指令,它會變得複雜(關於多次調用指令的循環)。

此外,您可以使用的大多數定時功能只是:功能。這意味着他們也會執行指令。如果你想要一個指令的時間,那麼最好的辦法是查找你正在使用的處理器的規格,看看它需要多少個週期。

以編程方式進行此操作是不可能的。

編輯:

既然你已經更新了你的問題現在參考一些說明。您可以在某些處理器上測量亞毫秒時間。很高興知道這個環境。這將在x86和Linux上工作,其他環境將有所不同。

Clock get time允許亞納秒精度。或者你可以自己調用rdstc指令(在多處理器或smp系統上運行這個指令 - 你可能在測量錯誤的東西,比如指令運行在不同的處理器上)。

+0

我需要測量執行一組指令所需的時間。但所花費的時間少於1毫秒。我已經嘗試過使用時鐘功能。有什麼建議麼??? – Romaan

0

實際到的時間實際上完成一條指令取決於時鐘週期時間以及指令通過處理器的流水線深度。正如戴夫所說,通過製作程序你無法真正發現這一點。您可以使用您的操作系統提供的某種定時功能來測量完成一些小指令所需的CPU時間。如果你這樣做,儘量不要使用任何依賴內存或分支的指令。理想情況下,你可能會做某種邏輯或算術運算(所以也許在C中使用一些內聯彙編)。