如何最好地确保指针已读入寄存器,以便进行基准测试?

how best to ensure that pointer has been read into register, for benchmarking purposes?

提问人:ajp 提问时间:11/8/2023 最后编辑:Peter Cordesajp 更新时间:11/8/2023 访问量:51

问:

我有一些代码大致是这样的

unsafe fn foo(p: *const X) {
  let x = *p;
  let begin = Instant::now();
  ... // potentially expensive processing of x
  let duration = begin.elapsed();
}

问题在于,由于无序执行等原因,通常会包括等待从内存中读取所花费的时间。我有理由想对“潜在昂贵的处理”进行基准测试,而不考虑等待时间。我能做些什么?这是内存屏障/栅栏的地方吗?(请注意,我在这里只关心单线程执行)durationp

Rust CPU-Architecture 微基准测试

评论


答: 暂无答案