套接字(网络)句柄的缓冲效率级别

Buffering effeciency level for socket (network) handles

我一直想知道在 Java 中缓冲流如何影响网络连接(或 OS 级别的套接字句柄)的性能。我知道缓冲文件句柄可以减少磁盘访问开销,但是网络连接呢?

从此类输入流中每次读取(假设一次读取一个字节)都会导致底层连接重新 xxx 某些内容?

我真的应该理解这一点,以澄清缓冲 nw 连接流是否真的值得,因为创建内部缓冲区(数组)会产生成本。

基本上,我正在尝试理解 cost/overhead 尤其是在访问网络时使用常规流。

感谢

一个典型的系统调用花费大约 2 micro-seconds。这看起来并不大,但如果你重复这样做,即每个字节一次,它真的会加起来。对于一个数据包,您可能会增加几毫秒的开销。

然而,8 KB 或 32 KB 甚至 1 MB 的内存成本非常低。也就是说,您决定是否需要缓冲区所花费的时间可能会花费更多,除非您有非常多的连接,即 > 10K。