概要
計算量とは、アルゴリズムが問題を解くために必要とするリソース、特に時間やメモリの量を指します。プログラムはただ動けばいいだけではありません。膨大なデータを扱う現代において、計算量はアルゴリズムのパフォーマンスを左右する重要な要素です。皆さんのコードはどれだけ効率的ですか?計算量の基本から、時間計算量や空間計算量の理解を深めることで、あなたのプログラミングスキルを次のレベルに引き上げましょう!
本トークで話す内容
計算量とはなにか?
時間計算量、空間計算量
実装時に意識すること
所感
ただただ聴き入ってしまった、計算量のお話。
基調講演でPHPのコアな部分の話が聞けてテンション上がった!って言ったんですが、
これまたコア〜なお話で、個人的には非常に興味深かったです。
処理の重さや効率は意識してコードを書いているつもりですが、
その実態までは考えられてなかった事に気付かされました。
PHP書き始めて約8年、独学でここまでやってきたので、本当、寝耳に水というか、
ここで聞けてよかった。
実際ループの処理なんかは計算量が増える、というのは直感的にわかりやすいですが、
それらが実際どのように計算処理されているのか。
opcodeの存在も初めて知り、これは実際に見てみたいと思いました。
開発系の多くのセッションは、心構えや意識、手法なんかを説いていくものが多く直接的な開発スキルに影響するような内容って、少ないと個人的には思っているのですが、
この話は開発スキルにダイレクトに影響を与える、学びある話でした。
エンジニアレベルがいくらか上がった気がしております。
スライド
受講メモ
## 計算量とは?
PHPコードは配列opCodeに変換され実行される
オーダー記法(O記法)
計算量の目安を表す便利な記法
for文の場合、回数に応じて計算量は線形に増える→o(n)
単一処理の場合、1回だけの計算→o(1)
時間計算量
計算の回数
空間計算量
メモリ使用量
計算量オーダーを下げる
in_arrayはo(n)関数、
array_key_existsはo(1)関数
データ量が少なければ特に差はない。
なんでも計算量を下げる必要はない
配列関数はPHPの中でも便利な関数
O記法で考える時に何に分類されるかを確認しておく
Laravel コレクションも。
複雑な要件を放置しない
ビジネスロジックも込みで考える