PHP5.6からどれくらいよくなっているのか、噂通りの改善がされているのか
試して確認した感じだと、噂以上に改善されてるようです。
今回は純粋に言語の改善度合いを比較しようとしたので、Webより大きな差が出てると思われます。実際のアプリではここまでの差はないでしょう。
■ベンチプログラム
簡単なテキストを読み込んで、ループするだけ。コマンドラインから起動してテストできるようにしてある。
VPSで実行。3万行のテキストを1行1行読み込んで処理する。
・PHP5.6の結果
real 0m10.978s
user 0m10.079s
sys 0m0.870s
USED_PEAK_MEMORY:1579720
・PHP7.0の結果
real 0m1.086s
user 0m0.477s
sys 0m0.596s
USED_PEAK_MEMORY:1440712
約10秒かかっていた処理が、約1秒で終了するという凄い差が出ました。ここまでの差が出るとは想定外です。
■配列のテスト
連想配列を3万行分作るようにしただけw
・PHP5.6
real 0m10.487s
user 0m9.438s
sys 0m1.031s
USED_PEAK_MEMORY:6267752
・PHP7.0
real 0m1.106s
user 0m0.502s
sys 0m0.595s
USED_PEAK_MEMORY:2493600
配列を作った分だけ余分にメモリを使ってます。
PHP5.6の場合:1579720 -> 6267752 (約4.5MB増)
PHP7.0の場合:1440712 -> 2493600 (約1MB増)
使用メモリが大幅に減ってます。
配列の効率も上がったようです。大きな配列を使うような処理が必要な場合は、PHP7.0にあげた方がより良いと思われます。
その後、いくつか改良を加えたら処理速度がさらに改善された。
real 0m0.436s
user 0m0.287s
sys 0m0.146s
USED_PEAK_MEMORY:3559808 ( 3.395 MB )
一番大きな改善は、ファイルへの出力回数をできるだけ減らすようにしたこと。
使用メモリが増えたのは、出力バッファなどいろいろ使ってるので、その分メモリが必要になってしまったが
3万件の処理が0.5秒で終了するようになるとは・・・ここまで改善されると、今後はPHPの使用範囲が増えそうです。
ラベル:PHP