APC定数定義とPHPの比較define_PHPチュートリアル

WBOY
リリース: 2016-07-13 17:45:08
オリジナル
1232 人が閲覧しました

最近、クラウドプラットフォームのコードアーキテクチャの準備をしていたときに、定数定義の速度を比較するという問題に遭遇したので、比較してみました。
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

tru​​ehttp://www.bkjia.com/PHPjc/478689.html技術記事最近、クラウド プラットフォームの暫定的なコード アーキテクチャに取り組んでいたときに、定解像度の速度比較の問題に遭遇したので、比較してみました。 PHP の APC 拡張機能については、PHP マニュアルに次の説明があります。h...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!