一.高精度延時, 是 CPU 測速的基礎
Windows 內部有一個精度非常高的定時器, 精度在微秒級, 但不同的系統這個定時器的頻率不同, 這個頻率與硬件和操作系統都可能有關。
利用 API 函數 QueryPerformanceFrequency 可以得到這個定時器的頻率。
利用 API 函數 QueryPerformanceCounter 可以得到定時器的當前值。
根據要延時的時間和定時器的頻率, 可以算出要延時的時間定時器經過的周期數。
在循環里用 QueryPerformanceCounter 不停的讀出定時器值, 一直到經過了指定周期數再結束循環, 就達到了高精度延時的目的。
高精度延時的程序, 參數: 微秒
二.測速程序
利用 rdtsc 匯編指令可以得到 CPU 內部定時器的值, 每經過一個 CPU 周期, 這個定時器就加一。
如果在一段時間內數得 CPU 的周期數, CPU工作頻率 = 周期數 / 時間
為了不讓其他進程和線程打擾, 必需要設置最高的優先級
以下函數設置當前進程和線程到最高的優先級。
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS)
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL)
CPU 測速程序的源代碼, 這個程序通過 CPU 在 1/16 秒的時間內經過的周期數計算出工作頻率, 單位 MHz:
標簽:
Windows
CPU
API
定時器
上傳時間:
2015-04-29
上傳用戶:iswlkje
分區表備份器 miniTO 源碼
現傳上源碼...希望能對正學習DOS,WINDOWS,磁盤和編程者有點幫助...
內含純DOS,WIN32控制臺和WIN32 GUI三個版本.它們生成的備份文件可以在任何版本中使用.
WIN32 GUI版本暫使用備份功能(其他模塊也都已全部寫好,全是完整的,現在僅開啟備份功能),如果想使用還原替換和比較功能,可自行打開調用的開關或加幾句調用的代碼就可以了, 一會兒我再把它們加上去,...
(在WIN,打印功能是不能使用直接使用DOS的代碼的,要把它們先送到編輯框的緩沖區再顯示的...有興趣的也可自己弄...)
因剛剛從DOS代碼轉寫成WIN,程序提示還沒有完全改寫成WIN的,printf()等還留在里面,不過對編譯沒有影響,有時間可以改寫掉,
因時間關系,沒有詳細的注釋,不過在寫的時候,變量名字基本是根據其功能起的,所以,對程序的代碼思路還是不難理解的
標簽:
DOS
WIN
WINDOWS
miniTO
上傳時間:
2015-10-05
上傳用戶:戀天使569