news 2026/4/19 3:57:24

往priority_queue里塞了100万个定时器,每次插入要走17层堆——时间轮用一次取模就解决了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
往priority_queue里塞了100万个定时器,每次插入要走17层堆——时间轮用一次取模就解决了

往priority_queue里塞了100万个定时器,每次插入要走17层堆——时间轮用一次取模就解决了


一个TCP长连接服务,10万个连接,每个连接带一个30秒空闲超时。连接每收到一条消息,超时重置一次。

写成代码只需要三行:取消旧定时器,算新的到期时间,插入新定时器。用std::priority_queue包一层,十分钟就能跑起来。

跑起来之后问题就暴露了。10万连接每秒活跃2万条消息,意味着每秒2万次定时器取消加2万次插入。priority_queue底层是一个最小堆,插入一次要从叶节点向上调整。调整的层数是log⁡2N\log_2 Nlog

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 17:52:26

Java的java.util.random.RandomGeneratorFactory随机数生成器工厂选择

Java中的随机数生成器工厂选择指南 在现代软件开发中,高质量的随机数生成对密码学、模拟测试和游戏开发等领域至关重要。Java在JDK 17中引入了java.util.random.RandomGeneratorFactory,为开发者提供了更灵活、高效的随机数生成器选择机制。本文将围绕该…

作者头像 李华
网站建设 2026/4/16 17:47:53

OpenRocket终极指南:5步快速掌握免费火箭设计与飞行仿真

OpenRocket终极指南:5步快速掌握免费火箭设计与飞行仿真 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket OpenRocket是一款功能强大的开源模型火…

作者头像 李华
网站建设 2026/4/16 17:45:41

AnythingLLM中向量数量与片段数量的优化策略

1. 理解向量数量与片段数量的核心概念 在AnythingLLM这类基于大语言模型的系统中,向量数量和片段数量是两个直接影响系统性能的关键参数。很多刚接触这类系统的开发者容易把它们混为一谈,其实它们代表着完全不同的技术维度。 向量数量就像是你家书架上所…

作者头像 李华
网站建设 2026/4/16 17:45:05

终极指南:如何通过AppleRa1n绕过iOS 15-16激活锁限制

终极指南:如何通过AppleRa1n绕过iOS 15-16激活锁限制 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾经因为忘记Apple ID密码而无法使用自己的iPhone?或者购买的二手设…

作者头像 李华