我有一個理論問題。假設你有一個InputStream
和一個OutputStream
。你需要將內容從一個拷貝到另一個,並且你不知道需要傳送的內容的大小。 write
方法中塊大小的一般選擇是什麼?java流中的最佳塊大小
6
A
回答
8
答案是:它取決於。對於一個通用的解決方案,停止擔心它只是使用一個庫。常見的選擇:
3
爲的BufferedInputStream和的BufferedOutputStream默認的緩衝區大小爲8KB,這通常是一個很好的規模。
注意:如果您正在讀取足夠快的套接字,您很少會獲得更多的一個數據包,大約1.5 KB。如果您正在從磁盤讀取數據,通常會得到您要求的任何大小,但性能在32 KB到256 KB之間無法提高,並且很可能取決於您使用的硬件。
但是我也發現,除非是基準測試,否則如果僅使用512個字節作爲緩衝區大小(哪種Inflator/Deflator流會執行),即差別可能小於或等於15%,您很少會看到明顯差異。
總之,您不大可能注意到512字節和32 KB之間的緩衝區大小不同。後者在大多數情況下可能綽綽有餘。我傾向於使用256 KB,因爲我有很多內存和很少的預分配緩衝區。
相關問題
- 1. HDFS中的最佳塊大小 - 可能造成大塊大小
- 2. Python ftplib最佳塊大小?
- 3. 實現最佳的'fread'塊大小?
- 4. dd:如何計算最佳塊大小?
- 5. Delphi中的文件流 - 最佳緩衝區大小
- 6. 如何計算上傳大文件的最佳塊大小
- 7. 在LAPACK中查詢dgels的最佳塊大小
- 8. 爲JBoss指定最佳的最小和最大堆大小
- 9. android中的最佳線程池大小
- 10. 最佳地減少最大流量
- 11. 最佳TCP段大小
- 12. 在Java中尋找BufferedInputStream的最佳大小
- 13. 如何計算數據流的最佳UDP數據包大小?
- 14. Android中不同佈局大小的最佳圖像大小
- 15. 將Hadoop塊大小更改爲低於最小塊大小
- 16. 什麼是通過DSL發送數據的最佳塊大小
- 17. C模塊(文件)大小的最佳實踐
- 18. 展開鏈接列表的最佳塊大小
- 19. 如何確定Win32上的最佳磁盤IO塊大小?
- 20. urllib2.urlopen讀取的最佳塊大小是多少?
- 21. Hashlib:在md5.update使用組塊的最佳大小()
- 22. Java最大文件大小
- 23. Java - 最小和最大值
- 24. 最小化文本塊的大小
- 25. Java中的最大流圖模擬
- 26. Aerospike的最大寫入塊大小
- 27. Java流按最小/最大值篩選嵌套集合
- 28. 堆中Java最大對象大小
- 29. 最大流量 - 最小切割定理
- 30. 最大,最小平均輸入流
這被稱爲「過早優化」。使用諸如Apache Commons IO之類的庫,然後如果出現性能問題,請調整塊大小。最佳值取決於連接到輸入和輸出流(磁盤文件,管道,網絡連接等)的內容。 – 2011-04-12 03:48:19
我通常使用4096作爲文件訪問的塊大小。在很多情況下它是有效的。雖然4096是非常小的塊,但與磁盤訪問成本相比,方法調用成本是可以忽略的。 – 2011-04-12 03:56:31