3 回測って、同じ答えが出た数字だけ
CPython 3.12.14 上で 21 ケースの純 Python 演算を計測しました。各ケースを独立に 3 回実行し、中央値のばらつき(変動係数)が 10% を超えたもの、片側が 1ms 未満のもの、差が 5% 未満のものは公開していません。
公開している計測
例外で分岐 は in で判定 より約 4.11 倍遅い4.11× · CV 1.7%json.dumps は pickle.dumps より約 2.62 倍遅い2.62× · CV 3.2%deepcopy は copy(浅い) より約 37.04 倍遅い37.04× · CV 0.9%% 書式 は f-string より約 1.75 倍遅い1.75× · CV 3.2%正規表現 は startswith より約 2.33 倍遅い2.33× · CV 3.5%index 参照 は 直接イテレート より約 1.54 倍遅い1.54× · CV 1.2%sum(list(range(n))) は sum(range(n)) より約 1.78 倍遅い1.78× · CV 3.6%deepcopy は JSON ラウンドトリップ より約 1.62 倍遅い1.62× · CV 0.9%dict.fromkeys は set() で重複除去 より約 1.49 倍遅い1.49× · CV 3.4%enumerate は range(len()) より約 1.45 倍遅い1.45× · CV 2.6%dict の参照 は __slots__ 属性 より約 1.12 倍遅い1.12× · CV 0.4%append ループ は リスト内包表記 より約 1.11 倍遅い1.11× · CV 0.3%sorted() で新リスト は list.sort() インプレース より約 1.06 倍遅い1.06× · CV 3.5%この計測が答えること・答えないこと
- 答える: 同じ入力規模で、どちらの書き方が速いか(CPython 上で)
- 答えない: PyPy / JIT との差、メモリ使用量、並列性能、別の入力規模での順位
測り方・端末・再現コマンドは 測定プロトコル。