2016年11月24日

PHP7.0の改善は思った以上だった

PHP7.0の簡単なベンチをしてみた。
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
posted by zjapan at 15:48| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。