c語言效能優化—使用暫存器變數
當對乙個變數頻繁被讀寫時,需要反覆訪問記憶體,從而花費大量的訪問時間。為此,c語言提供了一種變數,即暫存器變數。這種變數存放在cpu的暫存器中,使用時,不需要訪問記憶體,而直接從暫存器中讀寫,從而提高效率。暫存器變數的說明符是register。對於迴圈次數較多的迴圈控制變數及迴圈體內反覆使用的變數均可定義為暫存器變數,而迴圈計數是應用暫存器變數的最好候選者。
1.只有區域性自動變數和形參才可以定義為暫存器變數。因為暫存器變數屬於動態儲存方式,凡需要採用靜態儲存方式的量都不能定義為暫存器變數,包括:模組間全域性變數、模組內全域性變數、區域性static變數。
2.register是乙個"建議"型關鍵字,意指程式建議該變數放在暫存器中,但最終該變數可能因為條件不滿足並未成為暫存器變數,而是被放在了儲存器中,但編譯器中並不報錯(在c++語言中有另乙個"建議"型關鍵字:inline)。
下面是乙個採用暫存器變數的例子:
/* 求1+2+3+….+n的值 */
word addition(byte n)
return s;
} 本程式迴圈n次,i和s都被頻繁使用,因此可定義為暫存器變數。
暫存器變數沒有位址,所以使用&i 是錯誤的
之前一直沒有用過暫存器變數,現在碰到了,就記下來~~~
C語言效能優化
1 資料型別 1 如果確定整數非負,應直接使用unsigned int,處理器處理無符號unsigned 整形數的效率遠遠高於有符號signed整形數 2 float可以用int替代,如果需要結果精確到小數點後n位,可以將其乘以n 10,結果盡可能晚的把它轉換為浮點型數字 3 區域性變數盡可能的不使...
C語言暫存器變數
暫存器存在於cpu內部,運算速度非常快,因為記憶體中的資料必須載入暫存器才能計算。如果直接定義乙個變數為暫存器變數,則少了載入等過程自然會快。對於頻繁使用的變數可以把它放在暫存器中來提速度。對於vc編譯器會自動優化,即使沒有宣告暫存器變數,vc也會自動優化。對於gcc編譯器就不會自動優化。定義乙個暫...
C語言效能優化 使用位運算
使用位操作可以減少除法和取模的運算。在電腦程式中資料的位是可以操作的最小資料單位,理論上可以用 位運算 來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者進行資料變換,但是,靈活的位操作可以有效地提高程式執行的效率。例如 方法g int i,j i 257 8 j 456 32 方法h in...