Update content in test/benchmark.md

pull/439/head
lijinpeng 3 years ago
parent 45ffb76da9
commit 323b681841

@ -142,14 +142,14 @@ mod tests {
其实,原因藏在`LLVM`中: `LLVM`认为`fibonacci_u64`函数调用的结果没有使用,同时也认为该函数没有任何副作用(造成其它的影响,例如修改外部变量、访问网络等), 因此它有理由把这个函数调用优化掉! 其实,原因藏在`LLVM`中: `LLVM`认为`fibonacci_u64`函数调用的结果没有使用,同时也认为该函数没有任何副作用(造成其它的影响,例如修改外部变量、访问网络等), 因此它有理由把这个函数调用优化掉!
解决很简单使用Rust标准库中的 `black_box` 函数: 解决很简单,使用 Rust 标准库中的 `black_box` 函数:
```rust ```rust
for i in 100..200 { for i in 100..200 {
test::black_box(fibonacci_u64(test::black_box(i))); test::black_box(fibonacci_u64(test::black_box(i)));
} }
``` ```
通过这个函数我们告诉编译器让它尽量少做优化此时LLVM就不会再自作主张了:) 通过这个函数,我们告诉编译器,让它尽量少做优化,此时 LLVM 就不会再自作主张了:)
```shell ```shell
$ cargo bench $ cargo bench
@ -204,10 +204,17 @@ criterion_main!(benches);
最后,使用 `cargo bench` 运行并观察结果: 最后,使用 `cargo bench` 运行并观察结果:
```shell ```shell
Running target/release/deps/example-423eedc43b2b3a93 Running target/release/deps/example-423eedc43b2b3a93
Benchmarking fib 20
Benchmarking fib 20: Warming up for 3.0000 s
Benchmarking fib 20: Collecting 100 samples in estimated 5.0658 s (188100 iterations)
Benchmarking fib 20: Analyzing
fib 20 time: [26.029 us 26.251 us 26.505 us] fib 20 time: [26.029 us 26.251 us 26.505 us]
Found 11 outliers among 99 measurements (11.11%) Found 11 outliers among 99 measurements (11.11%)
6 (6.06%) high mild 6 (6.06%) high mild
5 (5.05%) high severe 5 (5.05%) high severe
slope [26.029 us 26.505 us] R^2 [0.8745662 0.8728027]
mean [26.106 us 26.561 us] std. dev. [808.98 ns 1.4722 us]
median [25.733 us 25.988 us] med. abs. dev. [234.09 ns 544.07 ns]
``` ```
可以看出,这个结果是明显比官方的更详尽的,如果大家希望更深入的学习它的使用,可以参见[官方文档](https://bheisler.github.io/criterion.rs/book/getting_started.html)。 可以看出,这个结果是明显比官方的更详尽的,如果大家希望更深入的学习它的使用,可以参见[官方文档](https://bheisler.github.io/criterion.rs/book/getting_started.html)。

Loading…
Cancel
Save