最佳文件缓冲区读取大小?

2024-01-13

我正在编写一个需要读取相当大的文件的应用程序。我一直想知道现代 Windows XP 计算机上读取缓冲区的最佳大小是多少。我在 google 上搜索并找到了许多以 1024 作为最佳大小的示例。

这是我的意思的一个片段:

long pointer = 0;
buffer = new byte[1024]; // What's a good size here ?
while (pointer < input.Length)
{
    pointer += input.Read(buffer, 0, buffer.Length);
}

我的应用程序相当简单,因此我不想编写任何基准测试代码,但想知道常见的大小是什么?


1k 的缓冲区大小似乎有点小。一般来说,不存在“一刀切”的缓冲区大小。您需要设置适合算法行为的缓冲区大小。现在,一般来说,拥有一个非常大的缓冲区并不是一个好主意,但是,拥有一个太小的缓冲区或不符合您处理每个块的方式也不是那么好。

如果您只是在处理数据之前将数据一块又一块地完全读入内存,我会使用更大的缓冲区。我可能会使用 8k 或 16k,但可能不会更大。

另一方面,如果您以流方式处理数据,则读取一个块,然后在读取下一个块之前对其进行处理,较小的缓冲区可能更有用。更好的是,如果您正在流式传输具有结构的数据,我会更改读取的数据量以专门匹配您正在读取的数据类型。例如,如果您正在读取包含 4 字符代码、浮点数和字符串的二进制数据,我会将 4 字符代码以及浮点数读入 4 字节数组。我将读取字符串的长度,然后创建一个缓冲区来一次读取整个字符串数据块。

如果您正在进行流数据处理,我会研究 BinaryReader 和 BinaryWriter 类。这些使您可以非常轻松地处理二进制数据,而不必过多担心数据本身。它还允许您将缓冲区大小与您正在使用的实际数据解耦。您可以在底层流上设置 16k 缓冲区,并使用 BinaryReader 轻松读取各个数据值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最佳文件缓冲区读取大小? 的相关文章

随机推荐