Maison >développement back-end >tutoriel php >PHP teste les performances de hidef

PHP teste les performances de hidef

墨辰丷
墨辰丷original
2018-06-11 16:44:151682parcourir

Cet article présente principalement l'utilisation de l'extension hidef au lieu de la définition en PHP pour améliorer les performances. Cet article se concentre sur le test des performances de hidef, et présente également la méthode d'installation et des exemples d'utilisation. Les amis dans le besoin peuvent s'y référer

Le site Web a besoin d'un nouvel ajout d'une constante, ouvrez le fichier config.php local et pensez aux solutions hidef et apc pour améliorer les performances de définition qui ont été testées il y a quelques années.

Mon programme a différentes configurations pour les serveurs de développement, de test et de production. En termes de constantes, j'utilise un tableau pour définir toutes les constantes qui doivent être définies, puis je vérifie s'il existe une fonction apc_load_constants. , définition par lots. Lorsque vous utilisez apc, chaque fois que vous ajoutez une constante, vous devez modifier $key pour prendre effet.

Maintenant que le php du serveur de test et de production a été mis à niveau vers la version 5.4, le cache opcode utilise Zend opcache et APC n'est plus installé. Étant donné que le cache utilisateur apc est utilisé, j'ai installé apcu en plus, et l'utilisation est exactement la même que celle d'apc, il n'est donc pas du tout nécessaire de modifier le programme. Cependant, apcu ne prend pas en charge apc_load_constants et apc_define_constants, la solution apc ne peut donc pas être utilisée. Je suis allé sur le site officiel et j'ai installé la dernière version de hidef 0.1.13, stable sortie le 12 juillet 2012, il y a plus d'un an.

Écrit un programme simple pour tester le temps défini. Il faut environ 2,8 ms pour s'exécuter 1000 fois. Ainsi, pour un site Web de taille moyenne (par exemple, PHP s'exécute 10 millions de fois par jour), si 25 constantes sont définies par page, cela prendra environ 1 000 000*25/1 000*2,8=700 000 ms par jour, soit 700 secondes. L’utilisation de hidef peut économiser près de 700 secondes de temps d’exécution PHP par jour.

Jetons un coup d'œil aux performances de lecture. Le test lit une fois constante 1w, et les valeurs sont toutes 1, qui sont respectivement de 37 ms et 0,7 ms. Donc, si 10 millions de fois par jour, une moyenne de 20 constantes sont utilisées par page, cela prendra 740 secondes, et l'utilisation de hidef dure 14 secondes, enfin, encore plus de 700 secondes.
Économiser 1 400 secondes de temps d'exécution PHP par jour peut être insignifiant, mais c'est toujours une bonne chose et cela vaut la peine d'essayer. Après tout, les chances de modifier les paramètres sont très faibles.
Lorsque les paramètres définis doivent être modifiés, modifiez simplement le fichier de configuration puis rechargez php-fpm.

Pour les méthodes d'installation spécifiques de hidef, veuillez vous référer à : Installation et utilisation de hidef, une extension PHP qui améliore les performances de définition


Recherchez "hidef" dans Baidu, et le troisième place est une copie de mon article de blog Site Web : (L'installation et l'utilisation de hidef, une extension PHP que j'ai publiée pour améliorer les performances de définition, n'ont pas été trouvées sur les trois premières pages. Apparemment, Baidu a quelques écarts dans l'identification de l'original.

Baidu recherche "hidef php", ce site Web se classe premier, le deuxième est le site officiel, et le mien est dans le troisième

gg recherche "hidef php", le premier site officiel, le troisième est. un autre article original, et le mien est dans le quatrième. Identification de gg Pas mal !

Recherche 360 ​​de "hidef php", le premier est le site de copie, le deuxième est le mien, et le troisième est un autre article original. .

Cet article est né pour voir s'il peut aider. Vous pouvez classer le premier article ou celui-ci 0

Vous trouverez ci-joint l'exemple de code du programme des constantes de configuration d'origine :


Le code est le suivant :

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);
Ci-joint le code pour tester la définition de la vitesse :



Le code est le suivant :

<?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;
Résumé

 : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il pourra être utile. Il sera utile à l'apprentissage de chacun

Recommandations associées :

Opérations PHP pour lire, éditer et enregistrer des fichiers


Comment utiliser PHP combiné avec la communication websocket html5


Comment implémenter un service Web en php


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn