【php】定数は遅いのか
問題
定数ってパフォーマンスには何か影響ありますか?
調査結果
define()の速度ではなくて、定数を使った処理の速度を確認してみた。
以下の3種類のスクリプトを用意
・test1.php
<?php define('XXXXXXXXXX', 123456789); for ($i = 0; $i < 1000000; ++$i) { if ($i < XXXXXXXXXX) { // do nothing } }
・test2.php
<?php $xxxxxxxxxx = 123456789; for ($i = 0; $i < 1000000; ++$i) { if ($i < $xxxxxxxxxx) { // do nothing } }
・test3.php
<?php for ($i = 0; $i < 1000000; ++$i) { if ($i < 123456789) { // do nothing } }
結果
# time php test.php real 0m0.343s user 0m0.321s if文で定数を参照している場合 sys 0m0.008s # time php test2.php real 0m0.260s user 0m0.234s if文で変数に代入した値を参照している場合 sys 0m0.011s # time php test3.php real 0m0.252s user 0m0.226s if文でプログラムに直接書かれた値を参照している場合 sys 0m0.014s
神経質に速度を気にするなら、定数も変数も使わないのがいい。
変数は速い。
定数を参照すると、なんだか知らないけど比較的遅め。
ただ定数を100万回も参照するという特殊な場合なので、あまり気にしなくてもよいだろうと思います。
【php】define()は遅いのか at softelメモ 2011年4月6日 20:45
[…] 参照するときは変数の方が若干速いのだが。 […]