开源观察 | 性能工具
Rust Benchmarks 小技巧
为什么你的 Rust Benchmark 可能出现问题,如何正确使用标准库中的 std::hint::black_box 呢? Gendignoux 在一篇文章中分享了他在深入挖掘Benchmark 出现的问题之后得出的结论。
https://gendignoux.com/blog/2022/01/31/rust-benchmarks.html
字符串连接操作的基准测试
基于 Hendrik Sollich 在 4 年前的工作,作者添加了一些常用的函数和宏的基准结果:
#![allow(unused)] fn main() { 0 ns/iter (+/- 0) from_bytes 10 ns/iter (+/- 0) concat_string_macro 10 ns/iter (+/- 0) concat_strs_macro 10 ns/iter (+/- 0) mut_string_with_capacity_push_str_char 10 ns/iter (+/- 0) string_concat_macro 10 ns/iter (+/- 1) mut_string_with_capacity_push_str 14 ns/iter (+/- 0) concat_in_place_macro 19 ns/iter (+/- 10) mut_string_with_too_much_capacity_push_str 22 ns/iter (+/- 0) array_join 24 ns/iter (+/- 0) array_concat 24 ns/iter (+/- 0) array_join_long 24 ns/iter (+/- 0) mut_string_push_str 27 ns/iter (+/- 0) string_from_plus_op 27 ns/iter (+/- 0) to_string_plus_op 29 ns/iter (+/- 0) to_owned_plus_op 30 ns/iter (+/- 0) collect_from_array_to_string 34 ns/iter (+/- 0) collect_from_vec_to_string 39 ns/iter (+/- 0) mut_string_with_too_little_capacity_push_str 43 ns/iter (+/- 1) string_from_all 52 ns/iter (+/- 0) format_macro 53 ns/iter (+/- 0) format_macro_implicit_args 68 ns/iter (+/- 1) mut_string_push_string }