広告スペース(バナー)
🐍Python レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向8▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 39 / 69
メモ化(キャッシュ)で計算を高速化する
このレッスンでは、メモ化(キャッシュ)というテクニックを学び、重い計算を効率よく高速化できるようになることを目標にします。「Python メモ化 とは」「Python lru_cache 使い方」で調べている方向けです。
メモ化は、一度計算した結果を「保管箱」に保存しておき、同じ入力が来たら計算し直さずに保管箱から取り出すテクニックです。「毎回同じ質問をされたら、覚えておいた答えをそのまま返す」ようなイメージです。時間のかかる重い計算を何度も繰り返す必要がなくなるため、アプリの応答速度を大きく改善できます。
サンプルコードでは、cacheという辞書を保管箱として使い、slow_square関数の中で「すでに計算済みか」をin演算子でチェックしています。すでに計算済みならキャッシュから即座に値を返し、まだなら計算してから結果をキャッシュに保存しています。
初心者がよくつまずくのが、キャッシュのキーとして何を使うべきかという設計です。引数が複数ある関数では、それらを組み合わせたタプルをキーにするなど工夫が必要になります。Pythonにはfunctools.lru_cacheというメモ化を自動で行ってくれる便利なデコレータもあり、実務ではよくそちらが使われます。
計算量の多い数値計算処理ほど効果が大きく、特に再帰的な計算やAPIの呼び出し結果をキャッシュする場面で、体感できるほどの速度改善が得られます。実務のパフォーマンス改善でもよく使われる考え方です。
Python
OUTPUT / 実行結果
💡 初回実行時はPythonエンジンの読み込みに数秒かかります。
🎯
ここまでできればゴール達成!
同じ計算を繰り返さない、高速な処理が作れるようになります。
同じ計算を繰り返さない、高速な処理が作れるようになります。
広告スペース(バナー)
広告スペース(記事内)