看板 C_and_CPP 關於我們 聯絡資訊
當我每次位移 2 的次方倍數來存取記憶體時 效能會慢兩倍以上 在不同的電腦 不同的 OS 做測試 好像都有這現象 難道 2 的倍數很容易 cache miss ? 看程式碼比較好解釋 http://codepad.org/W81Vso04 我用直覺猜 2 的倍數應該比其他還快 解果剛好相反 整個改觀 這樣讓我不知道什麼地方用該用 2 的倍數 什麼地方不要用 有人對這種奇特現象有研究嗎@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.224.26
MasterChang:我還以為是2的幕次....XD 08/25 08:35
VictorTom:你build binary是用debug還是release profile? 先拿 08/25 09:18
VictorTom:release build試試看是否也是如此@_@" 08/25 09:18
VictorTom:等等, 連CodePad那邊的output都顯示會跑的比較久ㄟ!? 08/25 09:19
firejox:時間變得差不多了XD http://codepad.org/eZmTkpCa 08/25 09:24
firejox:交換一下i j 還可以再快一點 08/25 09:43
xxxx9659:少了括號居然變快XD 08/25 11:30
xxxx9659:在 CodePad 上跑 K 沒辦法設太大 08/25 11:32
xxxx9659:我在我電腦上跑 #define K 20000 08/25 11:33
xxxx9659:func(2047, 20000); 執行時間: 0.938 sec 08/25 11:33
xxxx9659:func(2048, 20000); 執行時間: 2.109 sec 08/25 11:33
xxxx9659:func(2049, 20000); 執行時間: 0.891 sec 08/25 11:33
xxxx9659:func(2050, 20000); 執行時間: 0.812 sec 08/25 11:33
xxxx9659:除了 1024, 2048, 4096 會慢 3072(1024+2048)也會慢 08/25 11:37
netsphere:轉錄至看板 Test 08/25 15:55