C++26 的 std::hive 到底有多快?
来源:lemire.me — 2026-08-02
📋 概述
Daniel Lemire 对 C++26 新增的 std::hive 容器做了详尽基准。hive 介于 vector 与 list 之间:像 vector 一样连续块存储、可快速扫描;像 list 一样插入后元素永不移动、指针引用迭代器保持有效、可在常数时间任意删除。实测表明:hive 不是更快的 vector(构建约慢一倍),但它是好得多的 list——保留稳定引用与便宜擦除的同时更省内存;迭代是延迟受限的,与 list 类似但局部性更好。
🔑 核心要点
- std::hive 介于 vector 与 list 之间,连续块存储 + 元素永不移位
- 构建成本:vector 0.81ns/元素,hive 1.57ns,list 14.22ns——hive 约是 vector 两倍
- 迭代:vector 0.22ns 最快,hive 1.77ns 与 list 1.51ns 相当,hive 迭代与 list 一样延迟受限
- 擦除半数元素:hive 2.1ns 胜过 vector 3.0ns,但大数据下 vector 反超
- 内存:hive 每元素约比紧凑 vector 多 1 字节,远低于 list 的 32 字节
- 结论:hive 不是更快的 vector,但是好得多的 list
💡 金句
std::hive 这个数据结构不是更快的 vector,但它是一个好得多的 std::list——给你稳定的引用和便宜的任意位置擦除,同时用得更少内存。
👍 0
👎 0
← 返回 Lobsters 首页