我一直想知道Java中的流缓冲如何影响网络连接(或OS级别的套接字句柄)的性能。我理解缓冲文件句柄可以减少磁盘访问开销,但网络连接呢?
从这些输入流中每次读取(假设一次一个字节)会导致底层连接重新xxx什么?
我真的应该理解这一点,以澄清缓冲nw连接流是否真的值得,因为创建内部缓冲区(数组)有成本。
基本上,我试图了解在访问网络时使用常规流的成本/开销。
THX
答案 0 :(得分:1)
典型的系统调用大约需要2微秒。这看起来并不大,但如果你反复这样做,即每个字节一次,它真的会加起来。对于数据包,您可能会增加毫秒的开销。
但是,8 KB或32 KB甚至1 MB的内存成本非常低。即你决定是否需要缓冲区所花费的时间可能会花费更多,除非你有大量的连接,即> 10K。