Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

PHPスクリプト名取得のベンチマーク

__FILE__定数、$_SERVERグローバル変数、getenv関数を使ったベンチマークの結果が公開されています。まあ、順当といえばそうなんですが、やはり__FILE__が早いようです。


Here is the result(refresh and it changes):

__FILE__;0.000838
$_SERVER["PHP_SELF"];0.003908
$_SERVER["SCRIPT_NAME"];0.001379
$_SERVER["REQUEST_URI"];0.001351
getenv("REQUEST_URI");0.003506
getenv("SCRIPT_NAME");0.003074
getenv("SCRIPT_URL");0.003096
The result shows that __FILE__ is the fastest, so use that when you don't have to use any other method to find the script's self. __FILE__ is a built in constant show the location of the running script. Note that each one of those ways can return different things(like PHP_SELF is different than REQUEST_URI when used some mod_rewrite) but most times those have the same usage, refer to self.

掲載されているスクリプトを実際に試してみました。環境はP4-3GHz+2GB Mem+CentOS4.4+Apache2.2.3+PHP5.2.0で、結果は

  • __FILE__定数:0.001秒
  • $_SERVERグローバル変数:0.002〜0.003秒
  • getenv関数:0.01〜0.02秒

な感じでした。関数を経由すると、かなり遅いですね(1桁違う)。