首页 > 其他分享 >Why is epoll faster than select?

Why is epoll faster than select?

时间:2024-04-01 21:00:19浏览次数:18  
标签:文件 调用 faster epoll 描述符 poll Why select

  1. 对于select和poll来说,所有文件描述符都是在用户态被加入其文件描述符集合的,每次调用都需要将整个集合拷贝到内核态;epoll则将整个文件描述符集合维护在内核态,每次添加文件描述符的时候都需要执行一个系统调用。系统调用的开销是很大的,而且在有很多短期活跃连接的情况下,由于这些大量的系统调用开销epoll可能会慢于select和poll。

  2. select使用线性表描述文件描述符集合,文件描述符有上限;poll使用链表来描述;epoll底层通过红黑树来描述,并且维护一个ready list,将事件表中已经就绪的事件添加到这里,在使用epoll_wait调用时,仅观察这个list中有没有数据即可。

  3. select和poll的最大开销来自内核判断是否有文件描述符就绪这一过程:每次执行select或poll调用时,它们会采用遍历的方式,遍历整个文件描述符集合去判断各个文件描述符是否有活动;epoll则不需要去以这种方式检查,当有活动产生时,会自动触发epoll回调函数通知epoll文件描述符,然后内核将这些就绪的文件描述符放到之前提到的ready list中等待epoll_wait调用后被处理。
    select和poll都只能工作在相对低效的LT模式下,而epoll同时支持LT和ET模式。

综上,当监测的fd数量较小,且各个fd都很活跃的情况下,建议使用select和poll;当监听的fd数量较多,且单位时间仅部分fd活跃的情况下,使用epoll会明显提升性能。

标签:文件,调用,faster,epoll,描述符,poll,Why,select
From: https://www.cnblogs.com/yubo-guan/p/18109356

相关文章

  • 论文阅读:A new approach solve the multi-product multi-period inventory lot sizing
    论文:Anewapproachsolvethemulti-productmulti-periodinventorylotsizingwithsupplierselectionproblem期刊:Computer&OperationsResearch1.模型建立:具有供应商选择问题的多产品多周期库存批量确定1.1问题定义将具有供应商选择问题的多产品多周期库存批......
  • Mysql select 、update运行超时解决方案
    Mysqlupdate运行超时解决方案问题描述:执行update时,发现时间很长,而且会失败;步骤:1、在数据库执行:UPDATEplaySET skip =skip+500,run=5.50,jump_times=jump_times+1WHEREid=388;结果报错:ErrorCode:1205.Lockwaittimeoutexceeded;tryrestartingtransaction......
  • [GO-LANG] Why is my trivial program such a large binary?
     Whyismytrivialprogramsuchalargebinary?Thelinkerinthe gc toolchaincreatesstatically-linkedbinariesbydefault.AllGobinariesthereforeincludetheGoruntime,alongwiththerun-timetypeinformationnecessarytosupportdynamictypech......
  • 深度学习-卷积神经网络--复习FasterRCNN-61
    目录1.回顾2.细节--RPN网络3.细节--RoIpooling4.细节Classification4.训练在开始深入学习MaskRCNN之前先复习一下FasterRCNN这个是其他框架的基础重点的重点参考链接:https://blog.csdn.net/WZZ18191171661/article/details/79439212参考链接:https://blog.csdn.n......
  • 【数据库】PostgreSQL中使用`SELECT DISTINCT`和`SUBSTRING`函数实现去重查询
    在PostgreSQL中,我们可以使用SELECTDISTINCT和SUBSTRING函数来实现对某个字段进行去重查询。本文将介绍如何使用这两个函数来实现对resource_version字段的去重查询。1.SELECTDISTINCT语句SELECTDISTINCT语句用于从表中选择不重复的记录。如果没有指定列名,则会选择所有列。在......
  • IO模型介绍(select、poll、epoll)
    什么是IO?IO中的I就是input,O就是output,IO模型即输入输出模型,而比较常听说的便是磁盘IO,网络IO。什么是操作系统的IO?我们如果需要对磁盘进行读取或者写入数据的时候必须得有主体去操作,这个主体就是应用程序。应用程序是不能直接进行一些读写操作(IO)的,因为用户可能会利用此......
  • 解决element-ui el-select数据过大方案
    一、背景项目中需要用到el-select选择医院,全国医院数据量非常大,通过API读取数据页面直接卡死。 二、解决方案1、组件:el-select+vue虚拟滚动(vue-virtual-scroll-list)2、安装:npminstallvue-virtual-scroll-list--save3、参考:NPM地址:https://www.npmjs.com/pack......
  • 函数‘select’标签‘"data.frame"’找不到继承方法
     001、R语言中出现如下报错>a<-1:5>b<-letters[1:5]>test<-data.frame(a,b)>library(dplyr)>select(test,a)Errorin(function(classes,fdef,mtable):函数‘select’标签‘"data.frame"’找不到继承方法##此处报错 002、原因分......
  • 瀚高数据库 select-sql常用函数
    瀚高数据库select-sql常用函数1、字符串拼接||语法string||string示例'post'||'gresql'--返回postgresql2、字符串的长度length()语法length(string)示例length('odoo')--返回43、模式匹配like语法stringlikepattern示例’abc’like’abc’--返回true’abc’li......
  • Vue3 - Element Plus 下拉选择器 el-select 覆盖修改 placeholder样式,解决覆盖不生效
    前言如果需要Vue2版本,请访问这篇文章。本文实现了在vue3+element-plus网站开发中,完美覆盖el-select选择器样式,强力修改select下拉选择框placeholder样式,同时也支持修改文字、大小、边框、等,支持任意样式的覆盖修改!网上的教程几乎都不生效,使用本教程的方法......