👏

Rustのシンプルで色々できるベンチマークツール:Divanメモ [blessed.rsシリーズ15]

2024/06/22に公開

概要

https://blessed.rs/crates

こちらのリストにあるものを見て書いたメモになります。

今回はDivanについてです。

https://lib.rs/crates/divan

Divanとは

シンプルでかつ色々とできるベンチマークツール

参考

https://nikolaivazquez.com/blog/divan/

Criterionとの比較

  • こちらはジェネリック関数のベンチマークができる
  • こちらはアロケーションの測定ができる
  • よりシンプル(らしい)

一方、分析についてはCriterionの方がしっかりできそう:https://zenn.dev/kotabrog/articles/bcb72de6ad9849#htmlでのレポート

Getting Started

https://lib.rs/crates/divan

こちらをやるのがまずはよさそう

サンプル

色々なサンプルはこちらに

https://github.com/nvzqz/divan/tree/v0.1.0/examples/benches

CIでの使用

https://nikolaivazquez.com/blog/divan/#benchmark-in-ci

ノイズを減らす工夫により、CIでもベンチマークが実行できるようである。
使い方については上記リンク参照

オプションや特殊なケースの実行方法

出力について

コマンドラインでの特殊な実行方法

測定に関する計算式

https://nikolaivazquez.com/blog/divan/#sample-size-scaling

どのような根拠で測定を行っているのか、数式や参考にした論文を載せて説明してある

Dropについて

https://nikolaivazquez.com/blog/divan/#deferred-drop

ベンチマーク関数から値が返された場合、デストラクタはサンプルが記録されるまで実行されない

つまり、デストラクタの処理は測定されない

このようにすることで、デストラクタを測定したい場合とそうでない場合をコントロールできる

Discussion