如果我的代碼是將文件的每個字讀入ArrayList
或HashSet
,將代碼拆分爲多個工作人員threads
並分配每個文件塊以工作(假設多個核心)會更快嗎? ?我的直言不說,因爲在這種情況下,I/O
通常會成爲瓶頸,而不是CPU。多個線程會將代碼從磁盤讀入內存嗎?
1
A
回答
2
這取決於。你認爲IO將成爲瓶頸的思路可能是正確的,因爲很多磁盤以串行方式工作。但是,如果該磁盤是特殊的SSD或真正支持併發訪問的RAID?另外,如果有大量CPU綁定後處理需要使用數據完成,那麼您可以在讀取另一批數據時同時進行。不要太快地註銷併發選項!
3
關閉常規驅動器的IO通道通常比物理介質本身可以提供的要快得多,所以IO不會成爲瓶頸。藉助磁性媒體(又稱標準硬盤),當磁頭尋找你正在閱讀的各個地方時,你會使磁盤瘋狂地瘋狂。性能會很糟糕,相當於一輛購物車沿着一條空的6路高速公路滾下去。
固態硬盤不會受到搜索懲罰,但它們並不普遍(或負擔得起)足夠的尚未計數。
相關問題
- 1. 將磁盤inode讀到內存中
- 2. C寫入/讀取內存快照到/從磁盤
- 3. php:將磁盤映像從磁盤傳輸到緩衝區,而不會在內存中完全讀取它
- 4. 使用線程提高磁盤讀取性能(多個文件)
- 5. Linux'屏幕'不會從磁盤讀取
- 6. 可以從差異線程讀取磁盤優化程序?
- 7. 可以將HTML5 sessionStorage寫入磁盤嗎?
- 8. 寫入內存和磁盤同時
- 9. 將會話存儲在磁盤上
- 10. Spark DF CacheTable方法。它會將數據保存到磁盤嗎?
- 11. 從磁盤讀取和EINTR
- 12. 從磁盤緩衝讀取
- 13. 從內存而不是磁盤讀取文件
- 14. NSUserDefaults不會寫入磁盤
- 15. Spring會將內容保存在內存中還是保存在磁盤中?
- 16. 磁盤和內存版本的代碼之間的衝突
- 17. Gulp:從磁盤讀取內容以插入模板
- 18. 我應該爲每個磁盤寫入操作產生一個線程嗎?
- 19. 閱讀磁盤
- 20. NodeJs VM - 將編譯好的代碼保存到磁盤?
- 21. 閱讀從多個線程
- 22. asp.net將PNG寫入磁盤後的代碼問題 - iTextSharp和PDFStamper
- 23. 優化將字節數組映像寫入磁盤的代碼
- 24. MVC會話變量存儲內存VS磁盤緩存
- 25. 將XML寫入內存而不是磁盤
- 26. 存儲在磁盤上的HashMap從磁盤迴讀非常緩慢
- 27. 多次從磁盤加載到內存而不是頁錯誤
- 28. 從內存中嵌入HTML在c + +磁盤上的圖像
- 29. 返回數據幀vs寫入磁盤並從磁盤讀取csv的效率
- 30. 將trie保存到磁盤
「常規驅動器的IO通道通常比物理介質本身可以提供的要快得多,所以IO不會成爲瓶頸。」 - 爲什麼? – GBa
3Gbps和6Gbps SATA接口比標準驅動器物理吸取介質要快得多。最新的SSD,特別是Sandforce控制器,實際上可以接近(或超過)3Gbps。 –
在SAN/NAS的情況下如何? – GBa