測定プロトコル
このサイトの数字は、すべて bench/micro_py.py を同じ機械で実行した結果です。再現できなかったものは公開していません。
方法
- 各ケースは固定の繰り返し回数。1 サンプルが 1–500ms に収まるようにしている
- 1 回の実行で 21 サンプル取り、中央値を使う(平均は使わない)
- 同じケースを独立に 3 回実行し、中央値の変動係数(CV)を計算する
- 比率 CV が 10% を超えたら公開しない。差が 5% 未満のものも公開しない
- 各サンプルの前に
gc.collect()を 1 回走らせる
測らないもの
- メモリ使用量(ヒープ計測をしていない)
- PyPy / JIT との差(この計測は CPython の結果)
- 並列・スレッド性能
- 入力規模を変えたときの順位
公開しなかったケース
計測はしたが、上の条件を満たさなかったものです。
- getattr-vs-dictget — 差が 5% 未満(有意と言えない)
- list-in-vs-set-in — CV が 10% 超
- int-loop-vs-math — 片側の処理が 1ms 未満(比率が機械ノイズになる)
- genexp-vs-listcomp — 差が 5% 未満(有意と言えない)
- deque-vs-list-insert — CV が 10% 超
- sort-key-vs-none — 差が 5% 未満(有意と言えない)
- bytes-join-vs-concat — 片側の処理が 1ms 未満(比率が機械ノイズになる)
- str-concat-vs-join — 片側の処理が 1ms 未満(比率が機械ノイズになる)
環境
CPython 3.12.14 / MSC v.1944 64 bit (AMD64) / 12 論理コア / Windows (AMD64) / 単一プロセス。生データは data/g1.json・g2.json・g3.json。