為什麼讀取連續記憶體沒有比不連續的效率更高?

時間 2021-05-05 18:18:44

1樓:

從你的程式到記憶體條,中間有太多的內奸了。

包括但不限於:

1。 編譯器。編譯器可能根本就沒編譯你的測試。

編譯器的原則是:只保證materialize(最終輸出)正確,其他的能省就省。你這兒startTime和endtime中間,編譯器可以全乾掉,因為aObj和bObj在程式中從未被輸出過。

2。作業系統。即使申請了記憶體,在真正寫進去資料前,作業系統根本就不分配實際的實體地址段。

在這兒表現為,系統只給aObj和bObj及其周圍一小塊兒分配了真正的記憶體,兩者間距離還未知。

3。CPU的cache。最近訪問過的部分,再次訪問速度飛快,哪怕他倆離得老遠。

4。CPU的執行管線:各種預取,各種猜測,各種合併,並且還很準。你以為CPU先訪問A再訪問B,實際上CPU是AB一起訪問。既然是一起,離得再遠都和只訪問一次差不多。

ps. 記憶體訪問優化是效能優化的重中之重。不要小看人類在這個領域近50年搞出的花樣。

2樓:孫笑凡

因為cache line並不只有一條。主要原因是你實際上並沒有真的隨機訪問,而是交錯訪問了兩個位址,先訪問buffer頭,然後buffer尾,然後繼續頭尾重複,這樣,只需要把這兩個位址都快取起來就好了,根本沒有進行隨機訪問。

為什麼機械硬碟隨機讀取效能和連續讀寫效能差那麼多?

鄧卓 再來看下訪問時間,主要有三個部分 1.尋道時間,為讀取某個目標扇區的內容,傳動臂首先將磁頭定位到包含目標扇區的磁軌上,這個過程花費的時間即為尋道時間。平均值 3 9 ms,最大可至 20 ms。2.旋轉延遲,磁頭定位到目標磁軌後,驅動器等待目標扇區的第乙個位旋轉到磁頭下,這個過程如果是 540...

意識如果不連續,我們為什麼要為未來做打算?

Moon 根據最新的科學研究負責任的說意識是不連續的,http cqkp.cqnews.net html 20 16 04 21 content 36716514.htm 麥西 無須擔心這個,你要知道,你就是未來,未來就是你,審美也是同理 確實,你的思維,身體,你的一切都在更新,改變。每一秒的你和之...

為什麼認為微觀粒子的運動是不連續的?為什麼不是我們的時間刻度太粗糙呢?

Still Arjen 你已經考慮到微觀尺度,而還在只用粒子性描述這些微觀粒子,這是大錯特錯。在波粒二象性的假設下,微觀粒子波動性顯著,而波動性的基礎則是概率。你所說的測量即便時間尺度再小,也無法確定在ab兩點之間他是如何運動的,這是粒子本身的性質,與測量無關。當你去測量粒子的位置時,波函式便坍縮,...