当我有一个很大的 HashMap 文字时,如何改进编译时间?

urs*_*rei 5 rust

我有一个非常大的物理测量 HashMap(30 万多个 3 元素元组条目),我想将其保留为 HashMap(我可以将其移出 SQLite DB 并查询它,但我宁愿不这样做,出于性能原因)。将它作为文字包含会使编译时间......很长。有没有更好的方法?我可以将它以二进制格式序列化到磁盘,并在二进制文件执行/加载库时将其作为 HashMap 加载吗?使用子集进行开发和测试工作正常,但我需要完整的生产数据......

Art*_*mGr 5

所以你硬编码一个哈希映射?这似乎是一个完美的散列问题,请参阅https://github.com/sfackler/rust-phf crate。

至于编译时间,将哈希表卸载到一个单独的 crate 中,Cargo 只会在哈希表数据发生变化时重新编译这个 crate。

  • https://github.com/BurntSushi/fst 也是一种产生完美散列的方法,尽管可能有不同的权衡,而且肯定有不同的要求/限制,而且可能不如 rust-phf 方便。 (4认同)