2013-10-24 74 views
1

如何確定Buffer的大小,同時使用Buffered Input Stream讀取批量文件?是否基於文件大小?我正在使用,BufferedInputStream的緩衝區大小

byte[] buf = new byte[4096]; 

如果我增加緩衝區大小,它會快速讀取?

+0

它會一次讀取更多的字節。 –

+1

http://stackoverflow.com/questions/236861/how-do-you-determine-the-ideal-buffer-size-when-using-fileinputstream –

+0

增加Buffersize會減少往返,從而提高性能.. – Anirudha

回答

8

故意未記錄的默認值是8192字節。除非你有一個令人信服的理由來改變它,否則不要改變它,

+0

感謝您的回覆,如果假設我的文件大小低於8kb,則使用8192字節,那麼這不會成爲問題嗎? – user2507974

+0

它從未成爲問題。是什麼讓你覺得不對? – EJP

+0

似乎8K很小。我的電腦有8 Gb的內存。你能想到將緩衝區大小設置爲500k的潛在缺點嗎? –

1

你可以很容易地自己測試它,但這不是一個真正的大問題。幾KB就足夠用於緩衝區,所以你會得到很好的閱讀速度。

如果您對應用程序進行配置文件並意識到文件IO是性能瓶頸,那麼有辦法使其更快一些,如存儲映像文件。

+0

感謝您的回覆,我有疑問是否會一次讀取字節塊或是否逐塊讀取。如果是逐塊讀取,那麼如果我們增加緩衝區的大小,讀取速度會很高,所以我問。 – user2507974

+0

Thaks for reply.To爲了避免性能問題,你已經提到過關於內存映射。請參閱一些網站或樣本。 – user2507974