2011-09-05 100 views
0

我已經編寫了執行特定任務的代碼;現在當我在不同的機器上運行(具有不同的頻率)時,它會花費不同的時間嗎?我的代碼的機器效果執行時間的頻率是多少?

Ouestion

如果我的代碼有一個printf功能,然後將其所需的機器週期的數量是固定的所有機器,還是會依賴於系統?

我的系統頻率是2.0GHz,這是什麼意思?

+1

週期數會有所不同具體取決於編譯器生成的機器指令和CPU的體系結構。其他條件相同,速度將與時鐘速率成正比。 –

+0

@ Tom你的意思是說,對於一個系統printf()可能在10個機器週期內執行,對於其他系統可能需要15個機器週期。 –

+2

好吧,這兩個數字對於涉及I/O如'printf'的相當複雜的函數來說都非常小。但是,是的,可能會有顯着的差異。這完全取決於編譯器如何翻譯它以及機器的指令集。 –

回答

5

代碼的執行時間將取決於CPU的頻率以及許多其他事情。所有其他條件相同的情況下,更快的CPU將花更少的時間來執行相同的指令。但是其他可能影響時序的事物數量很多,包括O/S,編譯器,內存芯片,磁盤等等。

如果機器具有相同的基本架構,那麼機器週期數是固定的。但是,現代CPU架構非常複雜,並且根據機器上同時運行的其他內容,可能會有輕微的變化。如果這些機器具有不同的芯片類型(即使在諸如Intel Core 2 Duo之類的系列中),結果可能會不同。如果這些機器具有不同的體系結構(比如Intel和SPARC或PowerPC),那麼所有投注都是關閉的。

如果「頻率爲2.0 GHz」,則表示主CPU時鐘週期爲2.0 GHz。在這段時間內執行多少指令取決於指令,並行性(多少核)以及CPU類型等.CPU頻率與控制存儲器讀取速度的總線頻率是分開的(所以,我使用2.0 GHz CPU但內存總線運行在1067 MHz)。當然,電腦的

+2

「如果機器具有相同的基本體系結構,那麼機器週期數是固定的」 - 取決於相同基本體系結構的含義。即使忽略了內存性能差異等等,但對於某些指令而言,1.1版本的芯片對於某些指令的循環次數可能與同一芯片的1.0版本相比有所不同,儘管對於大多數用途你可以稱它們爲「相同的架構」。但是完全相同的芯片以不同的速度運行,週期數將是相同的。 –

0

CPU的頻率定義了它在特定時間內可以完成的工作量。所有機器上的代碼都是相同的(即它是編譯代碼),所以是的頻率會影響運行程序所花費的時間。

4

時鐘速度有其上的程序的執行時間影響,而只是說明該處理器在2 GHz的運行是絕對不夠的,以確定多長時間完全程序將運行,因爲有巨大處理器系列之間「效率」的差異 - 英特爾酷睿系列處理器在運行速度相同時,每單位時間的處理能力要比其前身Pentium 4高出許多。

所以是的,CPU速度對程序的執行時間有嚴重的影響,但只有GHz值是絕對不夠的。這就是建立各種基準的原因,以便能夠比較處理器在一個時間單元中可以完成的工作。這些基準將運行混合的指令,這些指令可以被視爲所選場景中的典型工作負載,以及執行時間需要多長時間。查看WhetstoneDhrystone瞭解一些較舊的但相對容易理解的基準。

,有噸的基準的事實只能證明這是不容易的,以獲得其關聯大家都能認同同等的數值,它仍然是辯論的主題......

+1

+1提供基準提名 – pmod