Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

ㄚ旺
Lv 5
ㄚ旺 發問於 電腦與網際網路程式設計 · 1 十年前

突發奇想!關於程式效能問題。

突發奇想!

寫的很好的程式不都是要讓執行速度變快嗎?

寫的很好的程式不都是要讓執行效能變好嗎?

但是要如何寫一個程式,讓非超執行緒(Hyper-Threading,HT)電腦CPU執行效能,在執行其他應用程式時慢50%或更慢,但不是接近當掉,只是讓它變慢而已。

請問會用到哪一些API 或概念。

1 個解答

評分
  • ?
    Lv 4
    1 十年前
    最愛解答

    你可以呼叫

    BOOL SetThreadPriority(

    HANDLE hThread, // handle to the thread

    int nPriority // thread priority level

    );

    nPriority = THREAD_PRIORITY_LOWEST 來降低 thread的優先權, 把執行時間讓給其他thread.

    若是沒有其他thread 跟你的 thread 搶的話, 你的 thread 還是會以正常的速度執行. 如果你要它跑的更慢一點, 可以在每個迴圈加一行 Sleep(10) (停 10毫秒), 可以糨強制CPU 切出此 thread 10毫秒.(或更多, 自行fine tune.)

    這個應用通常在程式有一個 thread 在作密集運算工作, 另一個 thread 在顯示UI 及接收外部 Message. 你如果不想 UI 操作起來 "卡卡"的, 這時後就要稍把運算工作 thread 讓一些時間出來.

    資料來源: MSDN
還有問題嗎?立即提問即可得到解答。