一、代碼調優
1、問題1--整數取模
一種算法是:
k = (j + rotdist)%n;
另一種優化方法是:
k = j + rotdist;
if(k >= n)
k -=n;
2、問題2--函數、宏和內聯代碼
通過宏替換函數來打破函數層次,提高算法效率。
3、問題3--順序搜索
一種優化是設置哨兵值來測試是否已經到達數組末尾。另一種優化是每次循環展開8次來刪除自增的運算,從而節省了開支。
4、問題4--計算球面距離
使用複雜的10個正弦和餘弦函數的三角公式,計算量很大。所以,可先用一些三角函數將經度和緯度轉換成x、y和z座標,然後計算該點到集合S中每個點的距離,它到S中某點的距離爲三個維度上差值的平方和。減少了計算量。
5、原理
效率的角色、度量工具、設計層面、雙刃劍。
二、節省空間
1、數據空間技術
(1)不存儲,通過計算來得到要搜索的值;
(2)對於稀疏數據結構,可有效進行有效數據的存儲;
(3)數據壓縮,例如將兩個十進制數字a和b編碼在一個字節中,該信息可通過以下兩個語句進行編碼:
a = c / 10;
b = c % 10;
(4)分配策略,可進行空間預分配,然後在要用到空間時直接使用;
(5)垃圾回收;
(6)函數定義;
(7)解釋程序;
(8)翻譯成機器語言。
2、原理
空間開銷、空間的“熱點”、空間度量、折中、與環境協作、使用適合任務的正確工具。