問題詳情

18 以下兩種不同版本的 C 程式,所有的變數皆為整數。版本一: for (j=0; j<20; j++) /* Version 1 */ for (i=0; i<10000; i++) x[i][j] = x[i][j]+1; 版本二: for (i=0; i<10000; i++) /* Version 2 */ for (j=0; j<20; j++) x[i][j] = x[i][j]+1; 2 個程式先後在同一台電腦上面執行,該電腦的處理器中有 1 個直接對應的(direct-mapped)資料快取記憶 體(data cache),其容量為 8KB,區塊長度(block size)為 16 位元組,假設軟體環境維持不變,也未受到 其他程式的干擾,且程式執行時未發生任何錯誤(error),請問下列敘述何者正確?
(A)版本一比版本二快,因為版本一的資料快取記憶體的失誤率(cache miss rate)比較低
(B)版本一比版本二慢,因為版本一的資料快取記憶體的失誤率(cache miss rate)比較高
(C)兩種版本速度相同,因為兩版本的資料快取記憶體的失誤率(cache miss rate)相同
(D)兩種版本的程式結果不同,不能比較

參考答案

答案:B
難度:困難0.266667
統計:A(2),B(8),C(11),D(2),E(0)

內容推薦

內容推薦