ライブラリ作者にとっては同じ書くなら遅いコードより早いコードを書くことを心掛けたいもの。この記事では忘れがちな速いコードの書き方について外部サイトの記事をまとめたいと思います。
(環境によって違うよなどご意見あればコメントお願いします)
※2018/2/3 追記
この記事は「アプリケーションレベルの実行速度の最適化」を語るものでも、保守性・安全性・拡張性等のパフォーマンスに関する特性以外のコード改善策についてまとめたものではありません。
elseif vs else if
ページ | 結論 |
---|---|
php elseif と else if の違い | elseifが速い |
※2018/2/3 追記
else ifとelseは最新のオプティマイザであれば理論上実行時間に差はない。
echo VS print
ページ | 結論 |
---|---|
PHP速度対決!差が出る5パターン | echoが速い |
※2018/2/3 追記
echoとprintの理論上の実行時間は同じとなる。
===演算子 VS ==演算子
ページ | 結論 |
---|---|
PHP速度対決!差が出る5パターン | ===が速い |
for VS foreach
ページ | 結論 |
---|---|
PHP速度対決!差が出る5パターン | foreachが速い |
for VS foreach(イテレータ) VS ジェネレータ
ページ | 結論 |
---|---|
PHPのジェネレータはイテレータより速い | for>>ジェネレータ>イテレータ |
if VS switch
ページ | 結論 |
---|---|
PHP速度対決!差が出る5パターン | switchの方が少し速いがほぼ同じ |
stackoverflow | 場合による |
こちらのページではPHP7.2からswitchのoptimiserが実装され、固定値のラベルに限りジャンプテーブルに変換されるようなので、固定値でたくさんのラベルを書く場合はswitchが有利になるケースもあるかも。
そもそも「switch文を使ってはいけない」という話もありますが...
(以下、随時追加予定)