一.高精度延時(shí), 是 CPU 測(cè)速的基礎(chǔ)
Windows 內(nèi)部有一個(gè)精度非常高的定時(shí)器, 精度在微秒級(jí), 但不同的系統(tǒng)這個(gè)定時(shí)器的頻率不同, 這個(gè)頻率與硬件和操作系統(tǒng)都可能有關(guān)。
利用 api 函數(shù) QueryPerformanceFrequency 可以得到這個(gè)定時(shí)器的頻率。
利用 api 函數(shù) QueryPerformanceCounter 可以得到定時(shí)器的當(dāng)前值。
根據(jù)要延時(shí)的時(shí)間和定時(shí)器的頻率, 可以算出要延時(shí)的時(shí)間定時(shí)器經(jīng)過(guò)的周期數(shù)。
在循環(huán)里用 QueryPerformanceCounter 不停的讀出定時(shí)器值, 一直到經(jīng)過(guò)了指定周期數(shù)再結(jié)束循環(huán), 就達(dá)到了高精度延時(shí)的目的。
高精度延時(shí)的程序, 參數(shù): 微秒
二.測(cè)速程序
利用 rdtsc 匯編指令可以得到 CPU 內(nèi)部定時(shí)器的值, 每經(jīng)過(guò)一個(gè) CPU 周期, 這個(gè)定時(shí)器就加一。
如果在一段時(shí)間內(nèi)數(shù)得 CPU 的周期數(shù), CPU工作頻率 = 周期數(shù) / 時(shí)間
為了不讓其他進(jìn)程和線(xiàn)程打擾, 必需要設(shè)置最高的優(yōu)先級(jí)
以下函數(shù)設(shè)置當(dāng)前進(jìn)程和線(xiàn)程到最高的優(yōu)先級(jí)。
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS)
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL)
CPU 測(cè)速程序的源代碼, 這個(gè)程序通過(guò) CPU 在 1/16 秒的時(shí)間內(nèi)經(jīng)過(guò)的周期數(shù)計(jì)算出工作頻率, 單位 MHz:
標(biāo)簽:
Windows
CPU
api
定時(shí)器
上傳時(shí)間:
2015-04-29
上傳用戶(hù):iswlkje
關(guān)鍵字: socket, 校驗(yàn)和算法, ICMP, connect, 端口,掃描,
這是我課程設(shè)計(jì)時(shí),用VC.NET寫(xiě)的一個(gè)程序,功能是在利用socket提供的api函數(shù), 填充并發(fā)送ICMP包,測(cè)試指定IP地址段中活動(dòng)主機(jī).
使用簡(jiǎn)單的connect方法來(lái)測(cè)試目的端口是否可通.并附帶了校驗(yàn)和算法.希望更多的人與我交流,
QQ:270596846 e_mail:chmuggmwtg@163.com
標(biāo)簽:
socket
ICMP
connect
api
上傳時(shí)間:
2014-01-27
上傳用戶(hù):稀世之寶039