最近、クラウドプラットフォームのコードアーキテクチャの準備をしていたときに、定数定義の速度を比較するという問題に遭遇したので、比較してみました。
PHP の APC 拡張機能は、PHP マニュアルで次のように説明されています。
http://cn.php.net/manual/zh/function.apc-define-constants.php
define() は遅いことで有名です。APC の主な利点はスクリプト/アプリケーションのパフォーマンスを向上させることであるため、このメカニズムは質量定数定義のプロセスを合理化するために提供されています。
これは、PHP の define 関数が比較的遅いことを意味します。apc が有効になっている PHP 環境では、apc の定数定義メソッドを使用した方が、define よりもはるかに高速です。
Apc 定数の定義では、関数 apc_define_constants() と apc_load_constants() のペアを使用します。
ここに 2 つのプログラムが用意されています。それぞれの実行時間をテストして違いを確認してください:
定義関数のコード:
$stime=microtime(true);
定義('TMP_PATH', '/tmp');
//...その他の定義、合計 20 個
API_MAIL をエコー;
エコー '
';
$etime=microtime(true);
echo $etime-$stime;
?>
APC 定数定義コード:
$stime=microtime(true);
if(!apc_load_constants('API')){
apc_define_constants('API', array(
'TMP_PATH' => '/tmp',
// ... その他の定義、合計 20 /
));
}
API_MAIL をエコー;
エコー '
';
$etime=microtime(true);
echo $etime-$stime;
?>
実行結果:
関数を定義:
0.000098943710327148
0.00010895729064941
0.00010585784912109
0.00010395050048828
...
APC 定数の定義:
0.00010991096496582
0.000039100646972656
0.000042915344238281
0.000041961669921875
...
この結果から、apc 定数定義を初めて実行するときは、define とほぼ同じ時間がかかりますが、最初の実行後は、その後の実行時間は非常に短く、define の 1/3 にすぎないことがわかります。定義の実行時間は毎回平均的であり、あまり変動しません。
コード分析から、apc 定数の定義は、まず apc_load_constants() 関数によって定数を取得し、定数が存在しない場合は apc_define_constants() を実行して定数を定義します。この利点は、定数が PHP 実行空間に一度にインポートされ、それぞれを定義する必要がないため、より効率的であることです。
注: このテストでは、PHP 環境で apc キャッシュがオンになっているため、定義関数のテストもメモリ レベルで実行されます。
この記事は「Zhenzhong's Technical Notepad」ブログからのものです
http://www.bkjia.com/PHPjc/478689.html