Windows程式效率 (轉)
減少程式在核心態和態之間的切換:namespace prefix = o ns = "urn:schemas--com::office" />
我們知道Windows系統中的應用程式可以在兩種狀態下執行-使用者態和核心態,但是如果程式在兩種狀態之間切換,則需要耗費上千個週期,這對於高質量的程式來說是絕對不能容忍的。典型的例子是使用者執行緒互斥的臨界區和互斥體(Mutex),互斥體是核心態,應用程式使用它時會切換到核心態,而臨界區則直接在使用者態下工作,所以如果可能,應該用臨界區取代互斥體。
使用執行緒代替程式以減少系統資源的開銷
在Windows系統中,程式是資源非配的單位,執行緒是排程的單位,因為執行緒共享程式的地址,所以與建立程式相比,建立執行緒可以節省大量的系統資源開銷。所以對於併發計算的問題,可以儘量使用執行緒機制來實現。
減少執行緒場景切換的開銷
執行緒為應用程式提供了併發機制,使程式的多個程式碼段可以“同時”執行,比如使用多個執行緒提高費時的IO操作,但是不是執行緒愈多越好呢?當然不是,執行緒雖然使用程式地址空間,但仍有自己的執行環境(堆疊、臨時令牌等),執行緒場景的切換是要耗費CPU資源的,同一個計算過程(不涉及IO操作),使用兩個執行緒來完成比使用一個執行緒來完成所需要的時間實際是更多。
減少的跨邊界(頁)訪問
在Windows系統中,記憶體是以頁(4KB)為單位組織的,由於Windows是虛擬系統,記憶體中的頁在不用時常換出到外存中,需要用到的時候再裝入記憶體,這樣可以使一個應用程式使用比實際記憶體大得多得地址範圍。但是記憶體得換入換出與CPU得速度相比是很費時的IO操作。下面有兩段幾乎完全一樣的程式,在VC下編譯為release版本後,前一段的執行時間是後一段的200多倍
程式1:
char buf[8][4000];
char ch;
int i, j;
for(j=0; j<4000; j++)
{
for(i=0; i<8; j++)
{
ch = buf[i][j];
}
}
程式2:
char buf[8][4000];
char ch;
int i, j;
for(i=0; i<8; j++)
{
for(j=0; j<4000; j++)
{
ch = buf[i][j];
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982782/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows中提高記憶體使用效率的絕技(轉)Windows記憶體
- 讓我們重視程式執行效率 (轉)
- 九大方面最佳化Windows記憶體使用效率(轉)Windows記憶體
- Windows程式SID詳解(轉)Windows
- Windows10提升效率小TipsWindows
- 初探WINDOWS下IME程式設計 (轉)Windows程式設計
- Windows 2000程式細述. (轉)Windows
- DeviceDriver Windows NT 驅動程式型別 (轉載) (轉)devWindows型別
- 玩轉 chrome 效率起飛Chrome
- 演算法於效率(轉)演算法
- WINDOWS CE 資料庫程式設計 (轉)Windows資料庫程式設計
- 轉: Windows控制程式碼數的限制Windows
- WINDOWS9x 的後臺程式 (轉)Windows
- Windows 輸入法程式設計 (上) (轉)Windows程式設計
- 在程式中使用 Windows的Task Bar (轉)Windows
- C#Windows程式的生與死 (轉)C#Windows
- 用DLL控制Windows中程式的方法(轉)Windows
- Windows XP 實用程式大總結(轉)Windows
- 《Windows 程式設計》學習筆記(五) (轉)Windows程式設計筆記
- 《Windows 程式設計》學習筆記(四) (轉)Windows程式設計筆記
- 輕鬆查詢Windows自啟動程式(轉)Windows
- Windows XP 中查詢驅動程式資訊(轉)Windows
- Windows藍色畫面錯誤程式碼 (轉)Windows
- 《Windows 程式設計》學習筆記(三) (轉)Windows程式設計筆記
- 使用Delphi,SDK編寫Windows簡單程式 (轉)Windows
- Windows 惡意程式碼解決辦法(轉)Windows
- Windows XP 明明白白系統程式(轉)Windows
- Windows SDK程式設計之一 視窗示例程式 (轉)Windows程式設計
- 提高C程式效率的方法C程式
- 艾偉_轉載:如何開發絢麗、高效率的介面(Windows嵌入式系統)Windows
- windows網路程式設計經典入門 (轉)Windows程式設計
- Windows系統中的寶藏之程式篇(轉)Windows
- 讓應用程式禁止Windows螢幕保護 (轉)Windows
- 輕鬆搞定Windows惡意程式碼攻擊(轉)Windows
- 禁止 Windows 98 自動執行應用程式(轉)Windows
- WINDOWS能夠自動載入程式的位置(轉)Windows
- 中國程式設計師不要被Windows俘虜 (轉)程式設計師Windows
- 用好Word模板 提高Word操作效率(轉)