#flush #clear #memory

clf

通过 __builtin_clear_cache() 清除CPU缓存行

9个版本

0.1.9 2024年6月9日
0.1.7 2023年2月12日
0.1.6 2023年1月27日
0.1.4 2022年6月14日
0.1.1 2021年6月16日

#461算法

Download history 4/week @ 2024-04-26 4/week @ 2024-05-17 3/week @ 2024-05-24 7/week @ 2024-05-31 217/week @ 2024-06-07 97/week @ 2024-06-14 61/week @ 2024-06-21 24/week @ 2024-06-28 46/week @ 2024-07-05 38/week @ 2024-07-12 59/week @ 2024-07-19 100/week @ 2024-07-26 23/week @ 2024-08-02 42/week @ 2024-08-09

235 每月下载量
用于 reloaded-memory-buffers

MIT/Apache

9KB
101

clf

crate Docs Rust Version Apache2/MIT licensed Test ubu Test mac Test win

通过 __builtin_clear_cache() 清除CPU缓存行

当您进行不依赖于CPU缓存的基准测试时,可以使用此crate。

支持

  • gcc和clang
  • gnu和musl
  • x86_64, aarch64, mips64el, powerpc64le ...等等
  • 最低支持的rustc 1.56.1 (59eed8a2a 2021-11-01)

错误

  • armv7-unknown-linux-musleabihf: 编译失败
  • x86_64-pc-windows-msvc: 编译失败

示例

易于使用

let a = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
clf::cache_line_flush_with_slice(&a);

let a = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
let begin_ptr = a.as_ptr();
let end_ptr = unsafe { begin_ptr.add(a.len()) };
clf::cache_line_flush_with_ptr(begin_ptr, end_ptr);

参考

CPU缓存

变更日志

此crate的变更日志在此。

许可证

本项目可在以下任一许可证下使用:

任选其一。

无运行时依赖

~185KB