Cache 結構對程式效能的影響

2021-07-27 19:41:36 字數 1108 閱讀 5352

乙個例子,我們來看看矩陣乘法中不同迴圈順序對程式效能的影響:

}

我們知道,改變i、j、k迴圈的先後順序,不影響程式的結果,我們來看看改變後所用時間的變化,在程式中對下面一段**修改i、j、k的迴圈順序:

for(i=0;i

i++)

}

結果如下:順序

時間i j k

9.798s

i k j

4.934s

k i j

4.831s

j i k

7.996s

出乎意料的是,以我們線性代數常性思維的方式所認同的i、j、k迴圈排序方式所用的時間最長,而將k迴圈提到外面去能大大縮短時間。當矩陣規模比較大時,這也為我們程式改進提供了方向。

微處理器的儲存結構如下:

從一級快取中提取中間結果的速度遠大於低階的快取,某些迴圈順序巧妙利用了計算機的這種cache結構;某些結果的計算依賴於前面計算的結果,在前面結果未出時,某些計算就開始排隊等待。計算順序的不合理安排,導致了計算時間的不必要增加。平行計算就是基於這個理念進行程式效能的優化的。

C 11 互斥鎖對程式效能的影響

在多執行緒中,對資料的保護機制,我們用到了互斥量 臨界區 讀寫鎖 條件變數等方法。一直以來都有些擔心鎖會降低程式的效能,儘管它是必須的,但究竟它能降低多少呢?那只有靠資料說話,下面的 是2個執行緒同時操作乙個變數 class testa explicit testa int n cnt n test...

Try Catch真的會影響程式效能嗎

很多帖子都分析過try catch的機制,以及其對效能的影響。但是並沒有證據證明,try catch過於損耗了系統的效能,尤其是在託管環境下。記得園子裡有位使用stopwatch分析過try catch在不同情況下,與無try catch的 相比,執行的時間指標,結果並沒有很大差異。下面我來結合il...

C 中Try Catch語句真的影響程式效能嗎?

很多帖子都分析過try catch的機制,以及其對效能的影響。但是並沒有證據證明,try catch過於損耗了系統的效能,尤其是在託管環境下。記得園子裡有位使用stopwatch分析過try catch在不同情況下,與無try catch的 相比,執行的時間指標,結果並沒有很大差異。下面我來結合il...