在Windows中,可以说我正在使用recv
函数从套接字接收数据。
我很好奇一个最佳缓冲区有多大?我可以将其设置为1024
字节,也可以将其设置为51200
字节或更大。我想知道哪种会更好。
这不仅适用于recv
函数,可以说我正在读取一个较大的文本文件,我想要很大的缓冲区还是较小的缓冲区?
最佳答案
操作系统执行自己的缓冲,因此缓冲区的大小并不重要。性能损失在于函数调用:1字节的缓冲区效率低下,因为它将需要对recv()
的过多调用。太大的缓冲区只会浪费空间。
最佳大小大约是您希望接收或能够在单个recv()
调用中处理的数据大小的两倍,下限大约为1或2 tcp帧。
我个人使用4KB缓冲区,但这是我自己的偏好,它在很大程度上取决于我正在编写的应用程序。