零拷贝深刻剖析及用户空间与内核空间切换方式

传统I/O操做java

整个过程,用户空间缓冲区只是临时存放数据的载体,不对数据操做。git

追求高性能、低延迟的瓶颈比较大。github

改进1:操做系统意义上的0拷贝性能

相比上一个,减小了用户空间和内核空间间的数据拷贝操作系统

改进2:netty

真正意义上的0拷贝:blog

实例:get

需求:实现文件读取发送,有C、S,C向S发送文件,S读取,用两种(传统io和零拷贝)方式,取中位数比较性能。it

https://github.com/chris1132/netty_lecture/tree/master/src/main/java/com/chovy/zerocopyio

两种对比:取屡次平均值,速度大概差了10倍