1. 記住阿姆達爾定律:
3. 我所了解的那些寫出非常高效代碼的人說,他們優化代碼的時間,是寫代碼時間的兩倍。
現代處理器從主內存中載入數據到處理器cache,會載入比單個值更多的數據。該操作會獲取請求數據和相鄰數據(一個cache行大小)的整塊數據。這意味著,一旦array[i][j]已經在處理器cache中,array[i][j+1]很大可能也已經在cache中了,而array[i+1][j]可能還在內存中。
和減少使用本地變數的理由一樣——它們也是存放在棧上。
尤其是常用的簡單類型(比如,color,vector,point等等),這些類經常被複制。
對上述代碼進行簡單轉換:Vector v(1,0,0); v+= Vector(0,1,0); v+= Vector(0,0,1);僅僅創建了兩個臨時Vector: Vector(0,1,0) 和 Vector(0,0,1)。這節約了6次函數調用(3次構造函數和3次析構函數)。
標準模板庫已經經過良好的優化,不過我建議你在實現一個互動式射線追蹤演算法時避免使用它。
23. 避免不需要的數據初始化
在現代CPU,浮點數運算和整數運算差不多擁有同樣的效率。在計算密集型應用(比如射線追蹤),這意味這可以忽略整數和浮點數計算的開銷差異。這也就是說,你不必要對算數進行整數處理優化。
本文章到此就結束了,交流群728483370,一起學習加油!
TAG:C/C | 編程學習 |