如何確定Buffer的大小,同時使用Buffered Input Stream讀取批量文件?是否基於文件大小?我正在使用,BufferedInputStream的緩衝區大小
byte[] buf = new byte[4096];
如果我增加緩衝區大小,它會快速讀取?
如何確定Buffer的大小,同時使用Buffered Input Stream讀取批量文件?是否基於文件大小?我正在使用,BufferedInputStream的緩衝區大小
byte[] buf = new byte[4096];
如果我增加緩衝區大小,它會快速讀取?
故意未記錄的默認值是8192字節。除非你有一個令人信服的理由來改變它,否則不要改變它,
感謝您的回覆,如果假設我的文件大小低於8kb,則使用8192字節,那麼這不會成爲問題嗎? – user2507974
它從未成爲問題。是什麼讓你覺得不對? – EJP
似乎8K很小。我的電腦有8 Gb的內存。你能想到將緩衝區大小設置爲500k的潛在缺點嗎? –
你可以很容易地自己測試它,但這不是一個真正的大問題。幾KB就足夠用於緩衝區,所以你會得到很好的閱讀速度。
如果您對應用程序進行配置文件並意識到文件IO是性能瓶頸,那麼有辦法使其更快一些,如存儲映像文件。
感謝您的回覆,我有疑問是否會一次讀取字節塊或是否逐塊讀取。如果是逐塊讀取,那麼如果我們增加緩衝區的大小,讀取速度會很高,所以我問。 – user2507974
Thaks for reply.To爲了避免性能問題,你已經提到過關於內存映射。請參閱一些網站或樣本。 – user2507974
它會一次讀取更多的字節。 –
http://stackoverflow.com/questions/236861/how-do-you-determine-the-ideal-buffer-size-when-using-fileinputstream –
增加Buffersize會減少往返,從而提高性能.. – Anirudha