2011-09-25 96 views
10

我不知道用於查詢本地PC處理器當前速度的win32 api函數/函數。我不想使用WMI,因爲在所有PC上似乎都不可行。win32 api函數獲取處理器的當前速度

+0

嗨芝麻!這個問題有點含糊,但希望有人可以提供幫助。 – Coffee

+0

您定位的是哪個版本的Windows? WMI的可用性僅取決於正在使用的Windows版本,我認爲... – bdonlan

+0

沒有API函數來執行此操作。即使WMI可能會給處理器時鐘速度提供不準確的值。我知道獲取時鐘速度的最佳方案是CPUz。 – Mysticial

回答

4

您可以(通常)使用QueryPerformanceFrequency函數獲得處理器速度。由於此函數返回系統性能計時器組件的頻率,所以我通常會說「通常」,但實際上所有當前CPU的可用頻率都與性能計時器組件的頻率相同。

該功能自Windows 2000起可用,所以很可能在今天的大多數PC上都支持它。

+1

「幾乎所有當前的CPU都可以以與性能計時器組件相同的頻率運行。」 [文檔](https://msdn.microsoft.com/en-ca/library/windows/desktop/dn553408(v = vs.85).aspx)聲稱:「在許多情況下,QueryPerformanceFrequency返回TSC頻率除以1024;而在Hyper-V上,當客戶虛擬機在實現管理程序版本1.0接口的管理程序下運行時,性能計數器頻率始終爲10 MHz。「特別是對於我的系統來說,似乎「1024除」情況是正確的。所以這似乎不太可靠:( –

2

一個簡單的谷歌搜索把我帶到this page,看起來它有兩種不同的方式來做你正在尋找的東西。

+0

這兩種方法都可能導致不準確的時鐘速度。原因是他們都在(直接)使用處理器中的「rdtsc」指令,它給出了「僞」循環而不是「實際」循環。 – Mysticial

+0

不是通常基於rdtsc的QueryPerformanceCounter實現?第二種方法看起來相當冗餘...... –