为了账号安全,请及时绑定邮箱和手机立即绑定

处理IO时,如何定义缓冲区大小?

处理IO时,如何定义缓冲区大小?

翻阅古今 2019-02-18 23:03:20
public static int KB = 1024; public static int MB = 1024 * KB; private static final int CAPACITY_SMALL = 4 * KB; private static final int CAPACITY_MEDIUM = 128 * KB; private static final int CAPACITY_LARGE = 1024 * KB; //package scope (default) - so they can be accessed from unit tests. byte[] smallMessageBuffer = new byte[1024 * 4 * KB]; //1024 x 4KB messages = 4MB. byte[] mediumMessageBuffer = new byte[128 * 128 * KB]; // 128 x 128KB messages = 16MB. byte[] largeMessageBuffer = new byte[16 * 1 * MB]; // 16 * 1MB messages = 16MB. 经常看见缓存的大小都是以位的大小定义,是因为习惯,还是因为什么原因?在实际项目中是否有什么策略根据自己需求来定义最优的值来处理IO?
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

缓存大小什么单位纯粹是个人喜好,最后都是化为以字节为单位。缓存越大,传输大数据量效率会更高,因为循环次数减少了;相应的如果每次实际传输的数据量大大小于缓存大小,比如只用到缓存大小的 1/10,那就有点浪费内存了,当然内存不敏感(比如多用个 1~2 MB 完全可以接受)的情况下无所谓。

查看完整回答
反对 回复 2019-03-01
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

第一个问题:你给出的代码都是以字节而不是位来定义缓存大小的;
第二个问题:通常操作系统都提供了带缓存的IO操作(IO流接口),如果在实际使用中通过测试发现瓶颈在IO,再考虑实现自己的IO缓存,

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 1372 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信