cot*_*aws 33 java io inputstream
从InputStreams读取时,如何确定byte []的大小?
int nRead;
byte[] data = new byte[16384]; // <-- this number is the one I'm wondering about
while ((nRead = is.read(data, 0, data.length)) != -1) {
  ...do something..
}
你什么时候使用小型和大型?有什么区别?这个数字是否需要以1024为增量?如果它是来自网络和磁盘的InputStream会有所不同吗?
非常感谢,我似乎无法在其他地方找到明确的答案.
Pet*_*rey 23
大多数人使用2的大小.如果缓冲区至少为512字节,则没有太大区别(<20%)
对于网络,最佳大小可以是2 KB到8 KB(基础数据包大小通常高达~1.5 KB)对于磁盘访问,最快的大小可以是8K到64 KB.如果你使用8K或16K,你就不会有问题.
注意网络下载,你可能会发现你通常不使用整个缓冲区.对于99%的用例而言,浪费几KB并不重要.
| 归档时间: | 
 | 
| 查看次数: | 12125 次 | 
| 最近记录: |