对比 rust 几种数据结构占用内存和插入速度,插入一亿条数据。
硬件:mbp 2019 编译参数:cargo run --release 插入 i32 条数: 100,000,000 结论 HashMap<i32,i32> 1.3G, 13s BTreeMap<i32,i32> 1.98G, 10s HashSet<i32> 650M, 13s Vec<i32> 381M, 0.27s 可以看出,Vec<i32> 没有额外的消耗,HashSet, HashMap, BTreeMap 额外消耗也很小。 代码 use std::convert::TryInto; use std::collections::{HashMap, BTreeMap, HashSet}; fn main() { // let mut a = HashMap::new(); // 1.3G, 13s // let mut a = BTreeMap::new(); // 1.98G, 10s // let mut a = HashSet::new(); // 650M, 13s let mut a = Vec::new(); // 381M, 0.27s // 1亿 条 let start = std::time::Instant::now(); for i in 0..100_000_000 { a.insert(i); // a.insert(i, i); }