#编译器优化 #优化 #屏障 #基准测试 #黑盒 #高效

无std pessimize

更高效的Rust编译器优化屏障

2个稳定版本

2.0.0 2024年6月14日
1.0.0 2024年1月5日

#438开发工具

每月 30 次下载

MPL-2.0 许可证

175KB
4K SLoC

pessimize - 更高效的Rust编译器优化屏障

MPL licensed Package on crates.io Documentation Continuous Integration Requires rustc 1.79.0+

微基准测试一开始是一项微妙的练习,而稳定版Rust上轻量级优化屏障的缺乏使得这更加困难。这个crate旨在通过提供对std::hint::black_box的替代方案来改善现状,它...

  • 尽可能轻量,如基于库的方法
  • 细粒度,允许精确的意图声明,从而降低开销
  • 可靠(不再有“在某些编译器目标上可能什么都不做”的情况,如果编译成功,则应该按广告宣传的方式工作)。

然而,代价是...

  • 微基准测试的可移植性降低(目前仅限于ARM、x86和RISC-V的32位和64位版本,nightly/future stable Rust上可以设想更多)
  • 实现中有很多不安全代码(我们经常需要将具有安全不变量的std类型转换为具有较少安全不变量的简单数据结构,然后通过一个什么都不做的优化屏障传递该数据结构的成员,最后将其转换回原始类型)。

依赖项