Blogブログ

2014-12-27 ITのお話

php の処理性能が意外な所で悪化した件

珍しく技術的な記事を。

もう、年末ですねー。
そろそろ、お仕事も終わりにしたいのですが、今年はダメのようです。もう少し頑張れって、神様が。

先日来、ミリ秒オーダで処理を依頼されている案件がありまして。

意外な所で php の処理性能が悪化したので、備忘の為記録。もう、皆さんには当然でしょうか。

環境は AWS。web サーバは apache 2.2.15。php は 5.3.3。

以外と性能ネックになっていたのは以下の処理2つ。

1) microtime()

2500 回のループ処理で、4[ms]。
よくデータ処理時間の記録等で多用される可能性も高いですよね。要注意です。
しかも、システムリソースに逐次確認が入るらしく、cpu リソースを使いきらない処理となる模様。
#ほんとのところはよくわからない。

2) 参照先未定変数利用

例えば定義し忘れた変数を使う場合。

いきなり、「echo $hoge;」等として、$hoge がどこにも無いパターンも該当。こちらは1処理あたり、3[ms] 必要。

これだけだと「そらそーだよね」と思うのですが、ちょっとびっくりするのがこんな例。

==
// 関数定義
function hogeFunc($a1, $a2){
// nop
}

// 呼び出し側
hogeFunc($arg1); // < 2つ目の引数を指定していない
==

上記の呼び出し形式で、hogeFunc を呼び出すと、関数呼び出しは当然正常に動作しますが、関数呼び出しコストがかかる(今回の場合、3[ms])。
えー、お作法守っているのにー。要注意です。

とまぁ、あんまりお役に立たない情報ですかね。

お後がよろしいようで。