投稿

[今さら始める Python マスター #15] パフォーマンス最適化

Pythonコードのボトルネックを測定し、データ構造、アルゴリズム、キャッシュで改善する考え方を学びます。

[今さら始める Python マスター #15] パフォーマンス最適化

まず測定する

最適化では、勘で直す前にどこが遅いのかを測ります。

1
2
3
4
5
6
import time

start = time.perf_counter()
# 処理
elapsed = time.perf_counter() - start
print(elapsed)

データ構造を選ぶ

検索が多いならリストよりセットや辞書が向いています。適切なデータ構造を選ぶだけで、大きく速くなることがあります。

重い処理を減らす

同じ計算を何度もしている場合は、結果をキャッシュします。

1
2
3
4
5
from functools import lru_cache

@lru_cache
def expensive(x):
    return x * x

ライブラリを使う

数値計算ではNumPy、データ処理ではPandasのように、最適化されたライブラリを使うのも重要です。

今日のゴール

パフォーマンス最適化は、測定、原因特定、改善、再測定の順に進めます。まずはボトルネックを見つける習慣をつけましょう。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。