dzmingli_vs_floating/bench の設計

設計目標

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

設計上の決定

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

乗算は 10,000 桁で止めます。DzmingLi の桁数見積もりは積が約 21,475 桁を超えるとオーバーフローするからです。他の演算は 20,000 桁まで続けます。拡張の 14 演算は実行時間を妥当に保つため 1,024 桁で止めます。上限の導出はパッケージの設計にあります。

正しさと不変条件

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

境界

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