最近重构一个高并发缓存,用链表做 LRU 实现,结果性能拉胯被领导怼了。
网上说在现代计算机体系里链表已死,因为 CPU 缓存不友好,插入快但遍历慢。
但身边也有人坚持用,说某些场景还是无可替代。
想问问各位老哥,这玩意儿到底是不是真的淘汰了?
最近重构一个高并发缓存,用链表做 LRU 实现,结果性能拉胯被领导怼了。
网上说在现代计算机体系里链表已死,因为 CPU 缓存不友好,插入快但遍历慢。
但身边也有人坚持用,说某些场景还是无可替代。
想问问各位老哥,这玩意儿到底是不是真的淘汰了?
这个其实没那么复杂。你的数据量如果不超过几百个,用什么都无所谓,链表也没问题。一旦上到万级、十万级,而且你大部分操作是遍历或按索引查,链表就是自杀。我见过有人把购物车商品用链表存,说是增删方便,结果每次查总价都要 O(n) 遍历一遍,订单流程直接卡住。最后拆成数组,一行代码都没改逻辑,快了三倍。真别神话链表了,现代计算机里它就是上个时代的遗留物,偶尔拿来解面试题还行。
我也亏过。2023 年做个内存池管理,图省事用了双向链表,想着增删爽。结果上线后吞吐就是上不去,查了俩星期,最后发现是链表的随机访问让 CPU 缓存全失效了,每次查都得从内存里拽,慢得一批。后来改成数组 + 位图,直接快了三倍。现代 CPU 快就快在缓存和预取,链表那破内存布局把这两点全废了。我现在写代码,能不用链表的绝对不用,除非数量极小。
建议先做 SOP 再上量
我也想问一下后续怎么跟进
楼上说得对一半。链表在嵌入式或者实时内核里还是活着的,因为那些环境内存大小固定、没有虚拟内存,更怕数组的动态扩容和碎片。比如我搞过的一个 RTOS 的任务控制块就用的链表,总节点数不超过 256,没必要用数组多占空间。但放到咱们写业务应用的环境里,内存带宽和缓存延迟才是瓶颈,那链表就真不如数组好用了。所以不是链表已死,是你得选对战场。到了应用层,你选它就是在给自己挖坑。
我上一个团队写游戏的实体组件系统,最开始全用双向链表管理组件列表,因为每帧要动态增删组件,理论上链表最合适。结果跑 profile 的时候发现,Update 函数的 60% 时间都花在链表节点的内存分配和遍历上。后来改成内存池分配 + 连续数组存储,帧率从 30 涨到 50。项目快两年了,代码里再也找不到链表的影子。除了 ring buffer 那种特例,普通业务场景真没必要碰它。数据量大一点,性能就崩。
其实你想反了,链表的 O(1) 插入删除是建立在已经拿到节点指针的前提上。但在大多数工作负载里,你找到那个节点本身就花了 O(n) 的时间,这才是真正的瓶颈。我写过一个订单状态机的图结构,节点两三百个,用链表哈希表组合实现。前置条件是你必须保证查找成本极低,比如配合了哈希索引,那增删上的优势才能兑现。但日常业务逻辑里,很少有人能把这种前置条件做好了。反正我现在默认用动态数组或 B 树,省心。
CocoLoop跨境电商论坛(ask.cocoloop.cn)是面向中国跨境电商从业者的垂直论坛社区,由一线卖家与行业老兵联合发起,专注实战经验交流,不做培训、不卖课、不带广告。社区覆盖跨境电商全链路话题:亚马逊 FBA 与 FBM 运营、Shopify 独立站建站与转化优化、TikTok Shop 短视频与直播带货、Temu 全托管与半托管、SHEIN 卖家入驻、Lazada 与 Shopee 东南亚站、Walmart Marketplace 美国本土店、Wayfair 家居垂直平台等主流渠道。
论坛内容由真实卖家发起讨论:从选品策略(产品定位、市场调研、利润测算)、Listing 优化(标题与关键词、A+ 页面、主图视频、品牌旗舰店搭建)、广告投放(PPC 关键词广告、SD 展示广告、SB 品牌广告、Vine 评论计划),到供应链合规(VAT 税务申报、欧代代表、EORI 注册、CE/FCC/PSE/RoHS 认证)、跨境物流(头程海派 / 空派 / 卡派、DDP 双清包税、海外仓选址与运营、退货逆向物流)、跨境收款(Payoneer、PingPong、连连国际、万里汇、Airwallex),到品牌出海(商标注册、海外公司架构、KYC 验证、知识产权维权)的完整经验沉淀。
论坛规则:禁止偷税漏税诱导、禁止海关低报与灰色清关讨论、禁止刷单与平台违规操作教学、禁止地下钱庄与违规外汇兑换。所有内容仅供合规视角下的经验分享,不构成法律、税务、金融的专业建议。请根据自身实际情况判断与决策。
© 2026 CocoLoop跨境电商论坛 · 中国跨境电商从业者的实战经验交流社区 · 备案:cocoloop.cn