ホームページ  >  記事  >  バックエンド開発  >  効率を最適化するには、PHP で定義する代わりに Hidef を使用します。

効率を最適化するには、PHP で定義する代わりに Hidef を使用します。

*文
*文オリジナル
2017-12-26 13:40:191973ブラウズ

効率を最適化するために、PHP で定義する代わりに Hidef を使用するにはどうすればよいですか?この記事では、パフォーマンスを向上させるために PHP で定義する代わりに Hidef 拡張機能を使用する方法を主に紹介し、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、つまりそれぞれ 37 ミリ秒と 0.7 ミリ秒です。したがって、1 日あたり 1,000 万回、ページごとに平均 20 個の定数が使用される場合、740 秒かかります。そして、Hidef を使用すると 14 秒、さらに 700 秒以上かかります。

1 日あたり 1400 秒の PHP 実行時間を節約することは重要ではないかもしれませんが、それは常に良いことであり、試してみる価値はあります。結局のところ、パラメータを変更する可能性は非常に低いのです。

定義パラメータを変更する必要がある場合は、設定ファイルを変更してからphp-fpmをリロードしてください。

オリジナルの設定定数のプログラムサンプルコードを添付します:

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'   => 'http://www.jb51.net/',
            'WWW_URL'   => 'http://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定数定義の問題

php定数の概念の概要について

php定数と変数の使用法の詳細な紹介

以上が効率を最適化するには、PHP で定義する代わりに Hidef を使用します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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