根据MSDN docs,ReceiveBufferSize默认为8192 我检查过,这不是使用缓冲区时有意义的二次幂的结果 有特殊原因吗?也许是因为TCP有一些额外的开销?
答案 0 :(得分:2)
2到13的幂是8192.所以,是的它是2的幂。
另请注意,它也是4096的倍数,偶然是最受欢迎的虚拟内存页面大小。
答案 1 :(得分:1)
传统上,操作系统中的内存管理器和页面文件在大小为2的页面上工作。这允许使用左/右移位操作执行非常有效的乘/除操作。使用缓冲区时,最糟糕的情况是使用大小比页面大小长1个字节的缓冲区(这将导致额外的页面交换,效益非常低)。因此,默认缓冲区大小也倾向于以两个因子实现。