void
*****_rotate1
(int dim,pixel *src,pixel *dst)
}}
**一文字描述:
這裡是書上的第乙個方法,消除迴圈的低效率。通過觀察源**可以發現在迴圈中對dim-1-j這個資料進行了重複的呼叫,所以這裡可以對迴圈進行修改,將計算時的行列進行調換,可以提前計算dim-1-j,這樣就可以省去每一次迴圈中重複計算的時間,可以很好的提高效率。
**二:
char *****_rotate2_descr=
"*****_rotate2: ***** baseline implementation"
;void
*****_rotate2
(int dim,pixel *src,pixel *dst)
**二文字描述:
通過劃分成4*4的小方塊對整個圖進行劃分,可以提高空間區域性性,但當dim比較小的時候,反而會變慢,因為當dim比較小的時候,決定時間的主要因素是演算法複雜度,而分塊演算法的複雜度比較高。
**三:
void
*****_rotate3
(int dim,pixel *src,pixel *dst)
**三文字描述:
這是書上的第二個方法,書上說可以通過消除函式呼叫來提高效率,我看了一下,在迴圈過程中重複呼叫了乙個ridx函式,而這個函式的功能就是計算三個引數i,j,n的引數式in+j的數值,所以這裡我可以直接將其去掉了,然後在第二個for迴圈外計算tmpdim的數值,因為這個是重複使用的,然後再在算式中直接計算所需要的資料,而省去了呼叫函式的時間,但總體上優化不明顯
**四:
void
*****_rotate4
(int dim, pixel *src, pixel *dst)
}}
**四文字描述:
這個方法是通過在for迴圈中盡可能多的進行操作,以此來達到提高效率的目的,這裡我只是將步長提高到了2,可以將步長提高到2的倍數,直到32
**五:
void
*****_rotate5
(int dim, pixel *src, pixel *dst)
src+
=tmp2;
dst+
=tmp4;
}}
通過迴圈展開可以進行很強的優化 HNU計算機系統實驗快取7 快取8
一 test trans 64x64矩陣轉置實驗 1 64 64矩陣,每行64元素,每8一組32位分8個組,故cache每4行填滿整個cache。2 測試傳統8分塊,結果如圖,發塊與不分快結果一樣,沒有優化。這是因為a陣列8x8讀取資料的時候與之前一樣,都是每組第乙個miss以後hit,但是b陣列按...
計算機系統
一陰一陽之為道。早在幾千年我國古人就知道天地萬物皆由正反兩個東西組成的。自從人類進入電氣時代,隨著電子元件的快速發展,各種裝置隨之誕生了。一些元件 例如閘流體 可以根據電壓的高低變化自行導 通或者關斷。如果是高電壓導通,就規定是1 低電壓導通規定是0,那麼眾多的這些元件組成的乙個整體就可以0 和1來...
計算機系統
做加法時,主要判斷是否溢位 無符號加溢位條件 cf 1 帶符號加溢位條件 of 1 舉例 若n 8,計算107 46 107 0110 1011 46 0010 1110 01001 1001 溢位標誌of 1 零標誌zf 0 符號標誌sf 1 進製標誌cf 0 無符號 sum 153,因為cf 0...