広告スペース(バナー)
🐘PHP レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向7▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 38 / 68
メモ化(キャッシュ)で計算を高速化する
このレッスンでは、メモ化(キャッシュ)というテクニックを学び、重い計算を効率よく高速化できるようになることを目標にします。「PHP メモ化 とは」で調べている方向けの内容です。
メモ化は、一度計算した結果を「保管箱」に保存しておき、同じ入力が来たら計算し直さずに保管箱から取り出すテクニックです。「毎回同じ質問をされたら、覚えておいた答えをそのまま返す」ようなイメージです。
サンプルコードでは、$cacheという配列を保管箱として使い、slowSquare関数の中でglobal $cache;によって外側の変数にアクセスしています。isset($cache[$n])ですでに計算済みかを確認し、済んでいればキャッシュから即座に値を返しています。
初心者がよくつまずくのが、関数の中から外側のグローバル変数にアクセスするためのglobalキーワードの必要性です。PHPの関数は基本的に外側の変数を自動的には参照できないため、明示的にglobalを宣言する必要があります。
計算量の多い処理ほど効果が大きく、実務のパフォーマンス改善でもよく使われる考え方です。特に再帰的な計算やAPIの呼び出し結果をキャッシュする場面で、体感できる速度改善が得られます。
📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください
🧪 このサイトではPHPを直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。
🎯
ここまでできればゴール達成!
同じ計算を繰り返さない、高速な処理が作れるようになります。
同じ計算を繰り返さない、高速な処理が作れるようになります。
広告スペース(バナー)
広告スペース(記事内)