Life, Education, Death

プログラミング以外でも思ったことをつらつらと書きたい

dirname( dirname(__FILE__) ) VS dirname(__FILE__)."/../"

自分の位置から上のディレクトリかファイルへのパスが欲しいときに

dirnameを重ねる人を今日はじめて知ったたので、どっちがいいか比較してみた


実行するphpからみて、../../../sample.xmlがあると仮定

function bench( $func, $num )
{
    $start = microtime(true);
    for( $i=0; $i<$num; $i++ )
        $func();

    $end = microtime(true);
    
    return ($end - $start);
}

function func1()
{
    $path = dirname( dirname( dirname( dirname( __FILE__ ) ) ) )."/sample.xml";
    $file = fopen( $path, "r" );
    fclose($file);
    return $path;
}

function func2()
{
    $path =  dirname( __FILE__ )."/../../../sample.xml";
    $file = fopen( $path, "r" );
    fclose($file);
    return $path;
}

echo func1()."<br>";
echo func2()."<br>";

echo "time = ".bench( func1, 100000 )."<br>";
echo "time = ".bench( func2, 100000 )."<br>";

結果は
2.51760601997 VS 2.39527606964となり、若干func2の方が早かった。

まとめ

dirnameを重ねる

  • 見た目がきれい!

../を使う

  • ちょっと早い


結論としては好みかなと。ちなみに後者の書き方が好きです。