2007年10月17日水曜日

phpの連想配列の添字は必ずダブルクオートで囲むこと!

以前、どこかのブログで

連想配列の添字は必ずダブルクオートで囲むこと!

というエントリを読んだことがあります。
つまり、こういうことです。

× $row[hoge]
○ $row["hoge"]


ダブルクオートなしとありでは、6倍近くパフォーマンスが変わってくるんだそうです。

というわけで、それを知ってからは必ず連想配列の添字はダブルクオートで囲むようにしていました。


そして今回、あるきっかけでこのダブルクオートの重要さを思い知ることになりました。。

きっかけは、2年近く前に作ったアプリケーションの動作が重たくなってきたことでした。2年の運用によってデータ量が多くなっており、ひとつの処理に数分かかって途中でタイムアウトしちゃったり、、といったことがしばしば。

ずっとDB側を疑っていました。SQLが効率悪いんじゃないか、とか、DBのチューニングが必要なんじゃないか、とか。

そしてある日、「そういえばこのアプリ、配列の添字をダブルクオートで囲んでいないな」ということを思い出しまして、特に重い処理を行うphpプログラムを選んで、添字をダブルクオートで囲んでやると、、、劇的に症状が改善!!

たしかに、このスクリプトでは何百回もループして同じ処理を繰り返しているので、積み重ねでどんどん重くなっていたんでしょう。たかがダブルクオート、されどダブルクオート、、、いい勉強になりました。

0 件のコメント:

コメントを投稿