epoll比select,poll性能更好吗
2018-01-22 17:23
309 查看
以前一直以为epoll模型比select和poll性能更好,毕竟select和poll都是轮询,即每次调用都扫描整个文件描述符集合,将其中就绪的文件描述符返回给用户程序,因此它们检测就绪事件算法复杂度是o(n)。epoll_wait采用回调的方式,内核检测到就绪的文件描述符时,触发回调,回调将该文件描述符对应的事件插入内核就绪队列,内核最后在适当的时间将该就绪队列中的内容拷贝到用户空间。因此epoll无须轮询整个文件描述符集合来检测哪些事件就绪,其算法复杂度是o(1)。但是,当活动链接比较多的时候,epoll的效率未必比select和poll高,因为此时回调函数被触发的过于频繁。所以,epoll适用于连接数量多,但活动连接比较少的情况。当然,epoll还支持高效的ET模式,以及epolloneshot事件,该事件能进一步减少可读、可写、异常事件被触发的次数。所以,用哪种模型,需要根据业务来综合考虑。
相关文章推荐
- linux提供了select、poll、epoll接口来实现IO复用,三者的原型如下所示,本文从参数、实现、性能等方面对三者进行对比。
- 千百万以上海量连接的select、poll和epoll等网络I/O模型的性能测试与分析提纲
- 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较
- 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较
- socket中的select 、 poll、epoll的区别
- Linux中select poll和epoll的区别
- select,poll与epoll
- linux 内核poll/select/epoll之间的区别总结[整理]
- select、poll、epoll之间的区别总结[整理]
- select, poll和epoll的区别(转)
- select、poll、epoll之间的区别总结[整理]
- linux 内核poll/select/epoll实现剖析
- 浅谈网络I/O多路复用模型 select & poll & epoll
- select、poll、epoll之间的区别总结[整理]
- select,poll,epoll实现分析—结合内核源代码
- 网络编程2---select poll epoll
- select, poll, epoll
- select,poll,epoll区别
- select、poll、epoll的比较
- select、poll、epoll之间的区别总结[整理]