C Windows 缓冲区大小

标签 c windows size buffer recv

在 Windows 中,假设我正在使用 recv 函数从套接字接收数据。 我很好奇最佳缓冲区有多大?我可以将其设置为 1024 字节,也可以将其设置为 51200 字节,或者更大。我想知道哪一个性能更好。

这不仅适用于 recv 函数,假设我正在读取一个大文本文件,我需要一个非常大的缓冲区还是一个较小的缓冲区?

最佳答案

操作系统执行自己的缓冲,因此缓冲区的大小并不重要。性能损失在于函数调用:1 字节缓冲区效率低下,因为它需要过多调用 recv()。缓冲区太大只是浪费空间。

最佳大小约为您期望接收或能够在单个 recv() 调用中处理的数据大小的两倍,下限约为 1 或 2 个 tcp框架。

我个人使用 4KB 缓冲区,但这是我自己的偏好,它很大程度上取决于我正在编写的应用程序。

关于C Windows 缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584147/

相关文章:

c++如何通过套接字发送Hbitmap

ios - 如何使用 Swift 从 Assets 中加载特定图像

linux获取某个文件夹及其子文件夹的大小到一定深度

c# - Clipboard.SetContent 中的错误

c - C 中的字符串加密

c - 当我写入超出数组末尾时,为什么我的程序不会崩溃?

c - 在 C 中使用 GTK+ 单击按钮后 GUI 变得无响应

windows - 我可以使用寄存器作为循环计数器吗?

matlab - 如何知道 MATLAB 中变量的大小

C - fclose() seg fault//如何不覆盖内存//欧氏div alg的C实现