2010/03/03

[PHP, 最適化] include や require では絶対パスで指定する。


[追記]2013/01/25
今更以下の情報はさすがに古いです・・・
昔はこういうことがあったんだよと下の世代へお伝え下さい・・・。


よく言われる、「PHPの最適化 12 PHP Optimization tips」が本当か、今更ながら検証してみます。
環境は
  • EeePC 1002HA
  • Ubuntu 9.10
  • Apache/2.2.12 (Ubuntu)
  • PHP Version 5.2.10-2ubuntu6.4
 第4弾は「include や require では絶対パスで指定する。」
そんなに違いはあるもんなの??

前回使用した a.php をまた読み込んで使いたいと思います。
ちなみに ../require/a.php としています。
<?php
class_exists('TimeRecorder') || require '../../TimeRecorder.php';

$recorder = new TimeRecorder(array(
    'absolute', 'nonabsolute'
));
$fileName = 'a.php';
$limit = 10000;

// 相対
$recorder->rec('nonabsolute');
for ($i = 0; $i < $limit; $i++) {
    require '../require/' . $fileName;
}
$recorder->rec('nonabsolute');

// 絶対
$recorder->rec('absolute');
for ($i = 0; $i < $limit; $i++) {
    require '/var/www/optimization/require/' . $fileName;
}
$recorder->rec('absolute');

$recorder->display();

結果
array(2) {
  ["absolute"]=>
  float(13.2543940544)
  ["nonabsolute"]=>
  float(7.41281294823)
}

ん?????
相対パスの方がはやい。。。。