如何根据当前服务器找到最合适的缓冲区大小来读取或写入Stream

2024-01-03

我正在编写一个服务器,它将准备好并写入巨大的文件/数据库。

我在很多地方使用了 Stream 读写函数,其中我使用 8192 作为缓冲区大小。

我还从 TCP 套接字读取大量输入。

我不知道将部署该服务的虚拟机的配置是什么。

是否有任何内置函数可以用来确定最适合我的服务器的缓冲区大小?


我自己也常常想知道这个问题。但最终我认为不存在适用的一般规则。这始终取决于您的具体需求。

根据经验,如果缓冲区较大,则需要较少的文件系统或数据库往返次数,这通常最适合大多数情况。

然而,在不创建其他应用程序的情况下,您的系统可以一次读取多少数据到内存中,这在很大程度上取决于您的个人环境。某些移动设备可能具有与您的 OTT 服务器硬件不同的细节,等等。

其他需要考虑的事情是网络带宽和其他共享资源,以及剪切性能对您的操作的影响。

例如,在一个包含数千个图像文件的项目中,经过多次尝试,我们发现 idela 缓冲区大小约为 1 MB。对于小于该大小的图像,我们使用等于文件大小的缓冲区大小。对于您的场景,这当然不适合。

Microsoft 性能专家 Rico Mariani 列出了性能编程的 10 个最重要的方面:测量、测量、测量、测量……(您明白了。:-))

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

如何根据当前服务器找到最合适的缓冲区大小来读取或写入Stream 的相关文章

随机推荐