1.select每次传入和取回时都要涉及到fd数组在用户态和内核态之间的复制,而epoll只复制一次;
2.select返回整个fd数组,不管有没有io事件,都要全部遍历一遍;而epoll返回的数组都是有io事件的,数量比前者少很多;
3.select每一次fd数组传入都涉及到fd与硬件的绑定,而这些绑定是很费时的;而epoll只需要绑定一次;
4.fd限制:select最多1024个,epoll要多很多。
参考
https://blog.csdn.net/qq_27529917/article/details/82945450