对比 rust 几种数据结构占用内存和插入速度,插入一亿条数据。

老子叫甜甜 提交于 2020-08-11 04:02:31

硬件: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);
    }
    println!("time: {}", start.elapsed().as_millis());
    std::thread::park();
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!