[問題] 記憶體使用2的倍數效能低落

看板C_and_CPP作者 (嘎嘎嘎嘎嘎)時間14年前 (2011/08/24 18:54), 編輯推噓1(1013)
留言14則, 4人參與, 最新討論串1/2 (看更多)
當我每次位移 2 的次方倍數來存取記憶體時 效能會慢兩倍以上 在不同的電腦 不同的 OS 做測試 好像都有這現象 難道 2 的倍數很容易 cache miss ? 看程式碼比較好解釋 http://codepad.org/W81Vso04 我用直覺猜 2 的倍數應該比其他還快 解果剛好相反 整個改觀 這樣讓我不知道什麼地方用該用 2 的倍數 什麼地方不要用 有人對這種奇特現象有研究嗎@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.224.26

08/25 08:35, , 1F
我還以為是2的幕次....XD
08/25 08:35, 1F

08/25 09:18, , 2F
你build binary是用debug還是release profile? 先拿
08/25 09:18, 2F

08/25 09:18, , 3F
release build試試看是否也是如此@_@"
08/25 09:18, 3F

08/25 09:19, , 4F
等等, 連CodePad那邊的output都顯示會跑的比較久ㄟ!?
08/25 09:19, 4F

08/25 09:24, , 5F
時間變得差不多了XD http://codepad.org/eZmTkpCa
08/25 09:24, 5F

08/25 09:43, , 6F
交換一下i j 還可以再快一點
08/25 09:43, 6F

08/25 11:30, , 7F
少了括號居然變快XD
08/25 11:30, 7F

08/25 11:32, , 8F
在 CodePad 上跑 K 沒辦法設太大
08/25 11:32, 8F

08/25 11:33, , 9F
我在我電腦上跑 #define K 20000
08/25 11:33, 9F

08/25 11:33, , 10F
func(2047, 20000); 執行時間: 0.938 sec
08/25 11:33, 10F

08/25 11:33, , 11F
func(2048, 20000); 執行時間: 2.109 sec
08/25 11:33, 11F

08/25 11:33, , 12F
func(2049, 20000); 執行時間: 0.891 sec
08/25 11:33, 12F

08/25 11:33, , 13F
func(2050, 20000); 執行時間: 0.812 sec
08/25 11:33, 13F

08/25 11:37, , 14F
除了 1024, 2048, 4096 會慢 3072(1024+2048)也會慢
08/25 11:37, 14F
netsphere:轉錄至看板 Test 08/25 15:55
文章代碼(AID): #1ELKZEA4 (C_and_CPP)
文章代碼(AID): #1ELKZEA4 (C_and_CPP)