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