当前位置: 首页 > 面试题库 >

您如何决定对InputStream.read()使用哪种byte []大小?

井誉
2023-03-14
问题内容

从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并没有多大关系。



 类似资料:
  • 问题内容: 无论是从Ipython会话内部还是从脚本内部进行交互,您如何确定matplotlib正在使用哪个后端? 问题答案: 使用该函数获取一个字符串,该字符串表示正在使用哪个后端:

  • 问题内容: 仅Java库中就有8个布局管理器,然后还有一堆3rd party产品。 前几天,我尝试使用SpringLayout并…好吧,它对我来说没有用。看到我的另一个问题。所以…如果你有一个Swing应用设计,并希望您的布局 只是这样 ,什么是您的首选布局管理器?有什么有趣/有用的经验可以联系吗? 更新:是的 ,请确保我知道不同的LM适用于不同的布局。但是我希望你们中的大多数人在所做的大部分事情

  • 问题内容: 想知道社区对各种可用的和免费的Java Profiler和性能分析工具有何看法。 问题答案: JProfiler对我们来说效果很好。 http://www.ej- technologies.com/products/jprofiler/overview.html

  • 问题内容: 您如何确定大写锁定是否在使用JavaScript? 需要注意的是:我用google搜索了,找到的最佳解决方案是将事件附加到每个输入,然后每次检查所按字母是否为大写,如果是,则检查是否也按住shift键。如果不是,则必须打开大写锁定。这感觉真的很脏而且只是… 浪费 -当然有比这更好的方法了吗? 问题答案: 您可以尝试一下。添加了一个有效的示例。当焦点位于输入上时,打开大写锁定会使LED变

  • 问题内容: 有很多Java嵌入式VM。您对ARM开发有何建议? http://www.cacaovm.org/ http://www.rtjcom.com/main.php?p=home http://www.k-embedded-java.com/ http://jamvm.sourceforge.net/ 我目前正在使用达拉斯的TINI平台,并且运行良好(512 KB RAM和1 MB闪存),