ホームページ >バックエンド開発 >PHPチュートリアル >PHP テストの Hidef パフォーマンス

PHP テストの Hidef パフォーマンス

墨辰丷
墨辰丷オリジナル
2018-06-11 16:44:151681ブラウズ

この記事では、パフォーマンスを向上させるために PHP で定義する代わりに Hidef 拡張機能を使用する方法を主に紹介します。また、インストール方法と使用例も紹介します。

Web サイトには新しいものが必要です。定数を追加し、ローカルの config.php ファイルを開き、数年前にテストされた定義パフォーマンスを向上させるための Hidef および APC ソリューションを考えてください。
私のプログラムには、開発サーバー、テストサーバー、本番サーバーで異なる構成があり、定数に関しては、定義する必要があるすべての定数を定義するために配列を使用し、apc_load_constants 関数があるかどうかを確認します。 、バッチ定義。 apc を使用する場合、定数を追加するたびに、$key を変更して有効にする必要があります。

テスト サーバーと運用サーバーの PHP が 5.4 にアップグレードされた後、オペコード キャッシュは Zend opcache を使用し、APC はインストールされなくなりました。 apc のユーザーキャッシュを使用するため、apcu を追加インストールしましたが、使い方は apc と全く同じなので、プログラムを変更する必要はまったくありません。ただし、apcu は apc_load_constants と apc_define_constants をサポートしていないため、apc ソリューションは使用できません。私は公式 Web サイトにアクセスし、1 年以上前、2012 年 7 月 12 日に安定版がリリースされた最新バージョンの Hidef 0.1.13 をインストールしました。

定義時間をテストするための簡単なプログラムを作成しました。1000 回実行するのに約 2.8 ミリ秒かかります。したがって、中規模の Web サイト (たとえば、PHP が 1 日に 1,000 万回実行される) の場合、ページごとに 25 個の定数が定義されている場合、1 日あたり約 10000000*25/1000*2.8=700000 ミリ秒、つまり 700 秒かかります。 Hidef を使用すると、1 日あたりの PHP 実行時間を約 700 秒節約できます。
読み取りパフォーマンスを見てみましょう。テストでは定数を 1w 回読み取り、値はすべて 1 (それぞれ 37ms と 0.7ms) です。つまり、1 日に 1,000 万回使用され、ページごとに平均 20 個の定数が使用される場合、740 秒かかりますが、Hidef を使用すると 14 秒、さらに 700 秒以上かかります。
1 日あたり 1400 秒の PHP 実行時間を節約するのは重要ではないかもしれませんが、パラメータを変更する可能性は非常に低いので、常に効果があり、試してみる価値があります。
定義パラメータを変更する必要がある場合は、設定ファイルを変更してから php-fpm を再読み込みしてください。

Hidef の具体的なインストール方法については、定義パフォーマンスを向上させる PHP 拡張機能 Hidef のインストールと使い方を参照してください。

Baidu で「hidef」と検索し、3 番目を参照してください。 place は私のブログ投稿のコピーです Website:( そして、define のパフォーマンスを向上させるために私が公開した PHP 拡張機能である Hidef のインストールと使用は、最初の 3 ページには見つかりませんでした。どうやら、Baidu ではオリジナルの識別にいくつかの逸脱があるようです。

Baidu で「hidef php」を検索すると、その Web サイトが 1 位にランクされ、2 番目が公式 Web サイトで、私の Web サイトは 3 位にランクされます。は別のオリジナルの記事で、私の記事は 4 番目にあります。 gg の特定 悪くありません!

360 「hidef php」で検索してください。1 つ目はコピー サイト、2 つ目は私のもの、3 つ目は別のオリジナルです。記事

それでは、この記事が誕生しました。最初の記事とこの記事を順位付けしても問題はありません。元の設定定数のプログラム サンプル コードを添付します。

コードは次のとおりです:

if (function_exists('apc_load_constants')) {
            function define_array($key, $arr, $case_sensitive = false) {
                if (!apc_load_constants($key, $case_sensitive)) {
                    apc_define_constants($key, $arr, $case_sensitive);
                }
            }
        } else {
            function define_array($key, $arr, $case_sensitive = false) {
                foreach ($arr as $name => $value) {
                    define($name, $value, $case_sensitive);
                }
            }
        }
        $constants = array(
            'HX'   => 1,
            'BLOG_URL'   => '//www.jb51.net/',
            'WWW_URL'   => '//www.jb51.net/',
        );
        define_array('hx_defined',$constants);

定義速度をテストするためのコードを添付します。

コードは次のとおりです。

<?php
$t1 = microtime(1);
    $constants = array(
        &#39;hx1&#39;       => 1,
        &#39;hx2&#39;       => &#39;2&#39;,
        &#39;hx3&#39;       => &#39;3&#39;,
        &#39;hx4&#39;       => &#39;4&#39;,
        &#39;hx5&#39;       => &#39;5&#39;,
        &#39;hx6&#39;       => &#39;6&#39;,
        &#39;hx7&#39;       => &#39;7&#39;,
        &#39;hx8&#39;       => &#39;8&#39;,
        &#39;hx9&#39;       => &#39;9&#39;,
        &#39;hx10&#39;       => &#39;10&#39;,
    );
    function define_array($key, $arr) {
        foreach ($arr as $name => $value) {
            define($name.$i, $value);
        }
    }
    
    for($i=0;$i<100;$i++) {
        define_array($i,$constants);
    }
    
    
$t2 = microtime(1);
echo ($t2-$t1)*1000;
//读性能
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
    $t = hx1;
}    
$t2 = microtime(1);
echo &#39; &#39;.($t2-$t1)*1000;
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
    $t = HX;
}    
$t2 = microtime(1);
echo &#39; &#39;.($t2-$t1)*1000;


概要

: 上記はこの記事の全内容です。

関連する推奨事項:

ファイルの読み取り、編集、保存のための php 操作

HTML5 WebSocket 通信と組み合わせた php の使用方法

php で Web サービスを実装する方法


以上がPHP テストの Hidef パフォーマンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。