为什么 TCPClient 的 ReceiveBufferSize 的默认值是 8192

本文关键字:8192 默认值 ReceiveBufferSize TCPClient 为什么 | 更新日期: 2023-09-27 17:56:58

根据MSDN文档,ReceiveBufferSize默认为8192。
我检查了一下,这不是 2 的幂的结果,这在使用缓冲区时是有意义的。
有特殊原因吗?也许是因为TCP有一些额外的开销?

为什么 TCPClient 的 ReceiveBufferSize 的默认值是 8192

2 的 13 次方是 8192。所以,是的,它是 2 的幂。

另请注意,它也是 4096 的倍数,顺便说一下,这是最受欢迎的虚拟内存页面大小。

传统上,操作系统中的内存管理器和分页文件在大小为 2 的页面上工作。这允许使用左/右移位运算执行非常有效的乘法/除法运算。使用缓冲区时,最坏的情况是缓冲区的大小比页面大小长 1 字节(这将导致额外的页面交换,而好处非常低)。因此,默认缓冲区大小也倾向于以 2 倍实现。