我有一个相当大的 Rust 板条箱,其中包含一些依赖项。现在,我想实施一些基准测试。为了获得最稳定的测量结果,我将 cachegrind 与 bheisler 的iai
.
即使在禁用 ASLR 之后,测量中仍然存在一些抖动。这很可能源于使用HashMap
随机播种哈希的 s。我知道我可以HashMap
用我自己的哈希器初始化 s 并使用预设值播种它,但是我的一些依赖项,比如s,它们自己serde
包含HashMap
s,所以这不是一个全面的解决方案。此外,编写类似下面的代码来初始化哈希映射有点……很多:
use highway::{HighwayBuildHasher, Key};
use std::collections::HashMap;
let high = HighwayBuildHasher::new(Key([0123, 4567, 8901, 2345]));
let mut map: HashMap<u8, u8, HighwayBuildHasher> = HashMap::with_hasher(high);
如何从标准库中消除任何固有的非确定性行为?有没有办法为影响整个板条箱(包括其依赖项)的 Rust 标准库指定默认哈希器,或者至少是默认随机种子?