[今さら始める 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 の下でライセンスされています。
