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

时间:2016-01-03 12:24:41

标签: java stream buffering

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

从这些输入流中每次读取(假设一次一个字节)会导致底层连接重新xxx什么?

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

基本上,我试图了解在访问网络时使用常规流的成本/开销。

THX

1 个答案:

答案 0 :(得分:1)

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

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