PythonループをNumPy化するとどれだけ速くなるか:100万件配列計算の実測比較
PythonループをNumPy化するとどれだけ速くなるかPython数値計算コードでよくある問題のひとつが、for文による計算の遅さです。小さいデータでは問題にならなくても、データ数が増えると、純Pythonのループ処理は急に重くなることがあります。 その場合、NumPyを使って配列計算に置き換えることで、処理時間を短縮できる可能性があります。実測ベンチマーク今回、同じ入力データ・同じ数式で、純PythonループとNumPy vectorized実装を比較しました。対象データ数: 1,000,000件 計算式: `sin(x) * log1p(y) + sqrt(x*y + 1)`結果は以下です。純Pythonループ中央値: 0.191241 秒 NumPy vectorized中央値: 0.019617 秒 速度改善: 約 9.75 倍 最大絶対誤差: 0.000e+00 最大相対誤差: 0.000e+00 この結果では、NumPy vectorized実装の方が高速で、数値一致も確認できました。重要な点高速化で大切なのは、単に速くすることではありません。速くなっても、結果がズレていれば実務では使えません。 そのため、改善前後で次の点を確認します。・処理時間 ・速度改善倍率 ・最大絶対誤差 ・最大相対誤差 ・同じ入力から同じ結果を再現できるか 注意点この結果は、今回の式・データサイズ・実行環境での測定例です。 この速度改善率は、今回の式・データサイズ・実行環境での測定結果です。実際のご依頼では、対象コードに対して、改善前後の処理時間・誤差・再現性
0