全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1452
推到 Plurk!
推到 Facebook!

cpu頻率程式的Bug

尚未結案
fancy
一般會員


發表:19
回覆:19
積分:7
註冊:2003-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-19 13:19:55 IP:61.66.xxx.xxx 未訂閱
以下是小妹根據別人的程式或資料修改成bcb語法(我已經忘了從哪得來的) 測cpu頻率的程式    int __fastcall TForm1::Frequence_MHz() {    LARGE_INTEGER ulFreq, ulTicks, ulTicksend,ulResult;     __int64 ulEAX_EDX, ulStartCounter,ulEndCounter,ulValue,ulValue2,x;            // it is number of ticks per seconds         QueryPerformanceFrequency(&ulFreq);          x=ulFreq.QuadPart/1000*50;         // current valueofthe performance counter         QueryPerformanceCounter(&ulTicks);         _asm {                 rdtsc                 mov DWORD PTR ulEAX_EDX, EAX                 mov DWORD PTR (ulEAX_EDX + 4), EDX         }         ulStartCounter = ulEAX_EDX;         do {                 QueryPerformanceCounter(&ulTicksend);         } while (ulTicksend.QuadPart - ulTicks.QuadPart
mkbobo
一般會員


發表:4
回覆:68
積分:19
註冊:2003-04-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-27 15:03:49 IP:61.222.xxx.xxx 未訂閱
int __fastcall TForm1::Frequence_MHz()
{
    LARGE_INTEGER ulFreq, ulTicks, ulTicksend,ulResult;
    __int64 ulEAX_EDX, ulStartCounter,ulEndCounter,ulValue,ulValue2,x;        // it is number of ticks per seconds
    QueryPerformanceFrequency(&ulFreq);
    x=ulFreq.QuadPart/1000*50;
    // current valueofthe performance counter
    QueryPerformanceCounter(&ulTicks);
    _asm {
        rdtsc
        mov DWORD PTR ulEAX_EDX, EAX
        mov DWORD PTR (ulEAX_EDX   4), EDX
    }
    ulStartCounter = ulEAX_EDX;
    do {
        QueryPerformanceCounter(&ulTicksend);
    } while (ulTicksend.QuadPart - ulTicks.QuadPart 
我不知道為何~~我沒有XP 用2000測試正常 但是個人認為有可能是 QueryPerformanceFrequency(); QueryPerformanceCounter(); 這兩個被動手腳了 這是WINDOWS 的API 你無法知道它怎麼算出頻率的 這程式雖然有利用到ASM 但是本體還是用到了WINDOWS的API 如果這兩個會去參考到redegit裡面的頻率 簡單的說 沒輒~~^^" 或許你可以在找找看網路上還有沒有別的可以用拉
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-27 15:31:53 IP:203.95.xxx.xxx 未訂閱
Hi, 參考這篇看看: http://www.delphir.itgo.com/Tips/How can I get CPU frequency.htm
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-28 21:44:09 IP:211.76.xxx.xxx 未訂閱
如同 mkbobo 所說,雖然是叫用 ASM CODE 但還是會因系統而異, 以 rdtsc 判斷 CPU 頻率的方式結果應該都是這樣,而目前大多數的軟體也都還是這樣"誤報",不過,會發生這種狀況的只在筆記型電腦上會發生,一般桌上型的應該是不會,除非有用特殊的軟體... 以個人認為最強的工作管理員     【推薦】TaskInfo 系統狀態監視器(很詳細喔)  http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28254    也是一樣,在我故意將 CPU 速度線上調慢時,TaskInfo 還是判斷出沒有降速的 CPU 頻率。 不過,在「我的電腦」右鍵內容視窗中,則可以看到真實的 CPU 頻率,我想,應該是有其他可用又不為人知的 API 或指定可以使用...    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
fancy
一般會員


發表:19
回覆:19
積分:7
註冊:2003-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-03 09:50:56 IP:61.222.xxx.xxx 未訂閱
謝謝大家提供的資訊 我再網路上找這資料很久 可是所得有限, 小妹寫程式的時間也不久 所以目前只有找到這個程式是可以在 98,NT,2000,xp底下算出頻率的 或許如dllee兄所說的,有其他的api可用 只希望有人能找到並提供給大家使用
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-03 16:12:50 IP:61.221.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=44877 記的以前 英代爾 有資料可查 不知是否還找的到 不過 誤差值 是一定會有的 如果要比較正確的數據 請找Linux的硬體判斷方式 不過windows系統也很有 可能會因中斷而無法使用 純亂說一篇
系統時間:2024-04-27 23:37:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!