12/3(木)、PHP7.0.0(正式版)がリリースされました!

はじめまして。JWord holyです。

今回は、PHP7.0.0について話したいと思います。
12/3(木)、PHPはバージョン7.0.0をリリースしました。

PHP7.0.0のリリース内容を一部抜粋すると、

・「PHP 5.6」と比較して2倍以上のパフォーマンス向上

・メモリ使用量の劇的な削減

・64ビットのサポートを実現

などが対応しているそうです。

なので本当に向上しているのか、検証してみようと思います。

検証について

検証については、下記の内容を参考にし、5系の最新バージョン5.6.16と7.0.0の比較を行います。

ループのメモリ使用量と処理速度を比較

実験方法

まず 10 万件の配列を生成します。

これをループで回して、変数に代入します。

この処理を 100 回行い、「最大メモリ使用量との差分値」と「処理時間」をそれぞれ計測します。

 

以下が、サンプルプログラムです。

1. foreach

1.1. 通常パターン

PHP では一番よく使うループ文なので、この計測がベースになります。

1.2. メモリ節約パターン

1.3. 通常パターン(参照渡し)

1.4. メモリ節約パターン(参照渡し)

2. while

2.1. 通常パターン

2.2. メモリ節約パターン

3. for

3.1. 通常パターン

3.2. メモリ節約パターン

検証サーバについて

上記の実験内容を、vmのLinuxサーバを使って、検証を行いました。

OS CentOS release 6.5 (Final)
 model name[プロセッサ名]  Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
 cpu MHz[プロセッサの動作周波数]  2391.142
 MemTotal[メモリ搭載量]  603576 kB

結果

5.6.16 7.0.0
 No.  ループ文  パターン  メモリ[MB] 処理時間[s] メモリ[MB]  処理時間[s]
 0.0  NOP  13.972  1.9  4.004  0.13
 1.1  foreach  通常  27.961  4.2 8.008  0.67
 1.2  foreach  節約  28.198  5.36  12.012  1.12
 1.3  foreach  通常-参照渡し  27.945  4.77  10.297  0.86
 1.4  foreach  節約-参照渡し  27.946  5.96  10.297  0.84
 2.1  while  通常  28.2  11.32  8.008  2.66
2.2  while  節約  28.052  6.7  8.008  3.2
 3.1  for  通常  27.961  4.4  8.008  0.79
 3.2  for  節約  28.065  3.35  8.008  0.97

 

検証の結果、PHP5.6.16に比べて、格段にパフォーマンスが上がっていることがわかりました。

弊社の業務システムもPHP5系からPHP7にアップデートしたいです。。

 

PHP5系からPHP7にアップデートする際の懸念点。

下記のページはPHP7をリリースで削除したモジュールが書いています。

http://php.net/manual/ja/migration70.removed-exts-sapis.php

・ereg

・mssql

・mysql

・sybase_ct

上記でモジュールを使った関数は無効になっているので、関数の変更をする必要があります。

例として、ereg_replace関数をみると、

http://php.net/manual/ja/function.ereg-replace.php

ereg_replace() は PHP 5.3.0 以降で非推奨になりました。この関数のかわりに preg_replace() を使うことを推奨します。

と記載しています。

なので、ereg_replaceからpreg_replaceに変更して、PHP7.0.0をアップデートする形になります。

アップデートするときは、一部関数の変更を行う必要がありますが、これを対応すれば、処理速度等の向上が期待できるので、遅いなと思っている方は是非やってみてください!!