Possible Duplicate:
如何确定使用FileInputStream时的理想缓冲区大小?
从文件(或任何输入流)中读取原始数据时,使用C ++的 istream
系列的 read()
或C的 fread()
,必须提供一个缓冲区以及要读取的数据量。我见过的大多数程序似乎都是随意选择512到4096之间的2的幂。
- 为什么必须/应该是2的幂次方,还是程序员对2的自然倾向?
- 什么是“理想”的数字? 通过“理想”,我指的是速度最快的数字。 我假设它必须是基础设备缓冲区的倍数? 或者下层流对象的缓冲区? 我怎样才能确定那些缓冲区的大小呢? 一旦我这样做了,使用它的倍数会比使用exact size更快吗?
编辑
大多数答案似乎是在编译时无法确定。 我可以在运行时找到它。