如果我要讀取一個大文件,併發運行多個線程將運行沒有緩衝區具有更快的傳輸速度或運行OS緩衝區會更好嗎?系統緩存vs無緩存
1
A
回答
2
您不應該有多個線程同時讀取同一個文件,使用一個線程讀取數據,然後以某種方式將數據發送給其他人。也就是說,使用緩衝區讀取會更快,但標準已經使用緩衝區(如果使用fread或ifstream進行讀取,如果使用直接讀取funcion,則不會有緩衝區)。
請注意,標準緩衝區將知道磁盤扇區大小,這意味着如果直接使用read,它將減少磁盤訪問。
0
這很大程度上取決於訪問模式。考慮作爲視頻播放器的第一個例子,聲音和視頻線程。他們都需要在大致相同的位置順序訪問文件。但是,一旦它被讀取,數據就不再需要了。因此,您需要預讀緩存,但不保留舊數據。
作爲第二個示例,考慮具有基於文件的表的數據庫應用程序。多個線程可以執行獨立的查詢。不同的表格和索引之間的參考地點不同。
顯然,這些例子差別很大。對某些人來說,這表明應用程序應該管理緩存。不是真的;最好的方法是告訴操作系統你要做什麼。做一個權衡更好的位置。它可以查看到磁盤的所有流量,並找出全局RAM壓力。
因此,內存映射文件可以是一種高性能的方式,以隨機訪問的方式讀取具有多個線程的大文件。它爲OS提供了一個平衡I/O和內存的好機會。
相關問題
- 1. 系統/操作系統緩存與應用程序緩存
- 2. FIFO緩存vs LRU緩存
- 3. 緩存讀取系統存儲器VS CPU讀取系統存儲器
- 4. 緩存drupal系統頁面
- 5. NHibernate系統緩存到期
- 6. 說明Magento緩存系統
- 7. MySQL操作系統緩存
- 8. 緩存內容,內存vs文件系統(PHP和Apache)
- 9. 將JSON保存到系統緩存中
- 10. Hibernate一級緩存vs查詢緩存
- 11. 一個緩存vs多個緩存
- 12. ASP.NET InProc緩存vs分佈式緩存
- 13. 緩存。瀏覽器VS Rails的緩存
- 14. 物理緩存VS邏輯緩存
- 15. Javascript性能:緩存vs無緩存 - 奇怪的結果
- 16. 會話vs緩存
- 17. php緩存vs cookie
- 18. BufferedReader和文件系統緩存
- 19. 使用phpfastcache文件緩存系統
- 20. Django緩存系統如何工作?
- 21. 爲緩存系統選擇數據庫
- 22. 緩存問題MySQL或文件系統
- 23. 網絡外的高速緩存系統
- 24. CodeIgniter緩存 - 系統或應用程序
- 25. 緩存系統。控制檯輸出
- 26. php,模擬include?緩存系統
- 27. 服務器端的Web緩存系統
- 28. Zend Framework 2緩存文件系統
- 29. LRU用於文件系統緩存嗎?
- 30. 支持Java集成的緩存系統