dzmingli_vs_floating/bench_common の設計

設計目標

この実行ファイルはライブラリパッケージを再現可能な実験に変えます。演算、サイズ、シード、プロトコルを固定し、出力ではすべての生レコードを要約の隣に残します。

設計上の決定

  • 固定のシード 0xDEC1A1 とプロトコル。 コーパスと実行順序が再現でき、JSONL のフィンガープリントが各データセットを識別します。
  • サイズごとに 3 データセット。 expand_digit_scales(sizes, 3) はサイズごとに三つのオペランドプロファイルを与えるので、結果が一組のオペランドの偶然にはなりません。確認用の繰り返し 20 回と合わせて 60 組の対応サンプルになります。
  • レコードは標準出力、レポートはディスクへ。 JSONL はパイプで渡してアーカイブでき、HTML レポートは実行のたびに再生成されます。
  • レポートの後で中断。 検証失敗のある実行もレポートは書き出し、その後失敗として終了するので、スクリプトがそれを正常な実行と取り違えることはありません。
  • native のみ。 公開された数値は native のリリースビルドでの計測です。代替の main により、他のターゲットでも moon check --target all が通ります。

これらのサイズは業務用の十進数や固定幅形式でよく使われる係数長です(decimal64 は 16 桁、28 は moonbitlang/x/decimal の最大スケール)。別の実行ファイルにすることで、短い数のレポートを長時間かかるスケーリングのレポートから独立させています。

正しさと不変条件

実行ファイルはライブラリのオラクルを通じて、計時の前に各データセットを検証します。パッケージの設計のとおり、サイズは有効な観測を通じてのみ対応のある統計に入ります。

境界

実行ファイルは引数を解析せず、実行時にサイズを選ばず、Matplotlib の図を描かず、実行同士を比較しません。一回の実行が表すのは一つのホストと一つのターゲットです。