【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
[...] 参照するときは変数の方が若干速いのだが。 [...]