PHPコード最適化高速化TIPSまとめついでといってはなんですが、配列の添字指定時に’(シングルクォーテーション)で括った場合の処理速度を確認してみました。処理は単純に、配列の要素を変数に代入するだけという物を10万回実行。$test[a];}結果は下記のとおりとなりました。秒また、添字が数字だった場合がどうなるかも試してみました。秒こちらは何回か試してみましたが、[‘0’]が早い時もあれば、[0]が早い時もあったので、処理速度に大きな差はないようです。コーディングスピードを上げるという観点から考えると、添字が数字の場合は[0]で良さそうです。いっても、数字の添字を直接指定して使う機会ってほとんどない気がします。文字列のオフセット指定時の’(シングルクォーテーション)また、文字列のオフセット指定についても’(シングルクォーテーション)のあり・なしで処理速度が変わるのか試してみました。Tarou';実行回数を10回に増やして比較してみました。早かった方が赤色です。大きな差は見られず誤差範囲のようです。結論としては、$a{0}のような波括弧を使用した記述は撲滅して欲しいです(笑)ネットはどうしても古い記事がそのままメンテナンスされず残ってしまうので、非推奨な書き方がいつまでも出回るのが難しいところですね。私も、古い記述の記事を掲載し続けないように気をつけねば。使用することにしました。使えば、下記のように簡単にURLから横幅と高さを取得することができます。叩く必要がでるため、速度が遅くなるのでこちらは却下。実装済みのurlより画像を取得プログラムはこんな感じ。使用しているのはこちらの方が動作が早いからです。cURL」などで検索すると色々と出てくるので、そちらに任せます。今回追加した画像の横幅と高さを取得するプログラムがこちら。どの程度速度に差が出るのか調べてみました。画像のURLを10個用意し、それぞれの取得にかかった時間と、その平均時間です。time:0.20241594314575ave:0.1969308853149410回では試行回数が少ないかと思いましたが、思ったよりも差が開きました。0.2秒程度かかりました。画像サイズを取得するのは、GDライブラリが使えないなどの理由が無い限り、避けたほうが懸命ですね。他にも、取得した画像データを一度ファイルに書き出して、getimagesizeを使用する方法が考えられます。(というか普通はこちらを先に試すよね)・・・が、ちょっとプログラムが面倒なので試してません。終わろうかと思ったのですが、ここまできてそれは無いか・・・と思い試してみました。画像データをファイルへ書き出す部分は、普通にこんな感じ。テンポラリファイルの削除unlink($temp_file);計測結果がこちら。time:0.046723127365112ave:0.04437358379364え~っと・・・。うん、こっちの方が早かったです。ファイルに書き出すのが面倒なので、画像データ文字列から直接、横幅と高さを取得出来る方法がないかな~と、探し始めたのが今回の事の発端だったのですが、最初から素直にファイルに書き出して取得していれば良かったですね。「0.0498秒」と「0.0443秒」、一見すると大した差に見えないかもしれませんが、APIなどで複数回アクセスをすることを考えると早いに越したことはないですね。テストに使用した画像のサイズが小さいこともあり、あまり差がないように見えるということもあるだろうと思い、大きいサイズで試してみました。画像データを取得」の部分を別個に分けて計測し、単純に「imagecreatefromstring」と「ファイル書き出し」での処理時間の差を比較できるようにしました。画像取得にかかった時間がこちら。0.078853535652161画像サイズを大きくしたので、画像取得自体にかかる時間も増えています。縦横を取得するのにかかった時間がこちら。縦横を取得するのにかかった時間がこちら。0.00041017532348633爆速ですね・・・。画像サイズが大きくなるほど差が開くようです。いうことで、一度ファイルに書き出して縦横を取得する方法が一番早いということがわかりました。面倒臭がらずに、一番単純な方法で実装するのが、一番動作が軽いという良い例になりました。最終的な検証に使ったプログラムは下記です。画像を取得する部分は、関数名「getFile」で関数化して「func_file.php」に保存してあります。