您如何决定对InputStream.read()使用哪种byte []大小?
从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..
}
什么时候使用小号vs大号?有什么区别?该数字是否要以1024为增量?如果它是网络vs磁盘的InputStream,是否会有区别?
非常感谢,我似乎在其他地方找不到明确的答案。
回答:
大多数人使用2的幂作为大小。如果缓冲区至少为512字节,则差异不大(<20%)
对于网络,最佳大小可以为2 KB至8 KB(基础数据包大小通常约为1.5 KB)。对于磁盘访问,最快的大小可以为8K至64
KB。如果您使用8K或16K,则不会有问题。
请注意,对于网络下载,您可能会发现通常不使用整个缓冲区。对于99%的用例而言,浪费几KB并没有多大关系。
以上是 您如何决定对InputStream.read()使用哪种byte []大小? 的全部内容, 来源链接: utcz.com/qa/410315.html