当使用 C++istream
系列read()
或 C从文件(或任何输入流)读取原始数据时fread()
,必须提供缓冲区,以及要读取的数据量。我见过的大多数程序似乎都是在 512 和 4096 之间任意选择 2 的幂。
- 是否有理由必须/应该是 2 的幂,或者这只是程序员对 2 的幂的自然倾向?
- “理想”的数字是多少?“理想”是指它是最快的。我认为它必须是底层设备缓冲区大小的倍数?或者可能是底层流对象的缓冲区?无论如何,我将如何确定这些缓冲区的大小?一旦我这样做了,使用它的倍数会比仅使用确切的大小来提高速度吗?
编辑
大多数答案似乎是在编译时无法确定。我可以在运行时找到它。