SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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万回も参照するという特殊な場合なので、あまり気にしなくてもよいだろうと思います。

関連するメモ

コメント(1)

【php】define()は遅いのか at softelメモ 2011年4月6日 20:45

[…] 参照するときは変数の方が若干速いのだが。 […]