「連想配列の添字は必ずダブルクオートで囲むこと!」
というエントリを読んだことがあります。
つまり、こういうことです。
× $row[hoge]
○ $row["hoge"]
ダブルクオートなしとありでは、6倍近くパフォーマンスが変わってくるんだそうです。
というわけで、それを知ってからは必ず連想配列の添字はダブルクオートで囲むようにしていました。
そして今回、あるきっかけでこのダブルクオートの重要さを思い知ることになりました。。
きっかけは、2年近く前に作ったアプリケーションの動作が重たくなってきたことでした。2年の運用によってデータ量が多くなっており、ひとつの処理に数分かかって途中でタイムアウトしちゃったり、、といったことがしばしば。
ずっとDB側を疑っていました。SQLが効率悪いんじゃないか、とか、DBのチューニングが必要なんじゃないか、とか。
そしてある日、「そういえばこのアプリ、配列の添字をダブルクオートで囲んでいないな」ということを思い出しまして、特に重い処理を行うphpプログラムを選んで、添字をダブルクオートで囲んでやると、、、劇的に症状が改善!!
たしかに、このスクリプトでは何百回もループして同じ処理を繰り返しているので、積み重ねでどんどん重くなっていたんでしょう。たかがダブルクオート、されどダブルクオート、、、いい勉強になりました。
0 件のコメント:
コメントを投稿