Maison  >  Article  >  développement back-end  >  Quelles sont les différences entre php7 et php5 ? Comparaison entre php5 et php7

Quelles sont les différences entre php7 et php5 ? Comparaison entre php5 et php7

不言
不言original
2018-08-06 15:21:0139443parcourir

Cet article vous présente quelle est la différence entre php7 et php5 ? La comparaison entre php5 et php7 a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'elle vous sera utile.

PHP7 arrive

Cela fait un an et demi depuis la sortie officielle de PHP7. Lors de sa première sortie, on disait qu'il était plusieurs fois plus rapide que PHP7. l'ancienne version. Divers frameworks open source ou La vitesse et l'efficacité du système fonctionnant sur PHP7 ont augmenté à plusieurs reprises. Quoi qu'il en soit, les médias et les développeurs attisent les flammes. Non, ils devraient être pleins d'éloges.
Je vais juste te regarder t'exhiber tranquillement sans dire un mot.

Généralement, je suis la dernière personne à mettre à niveau les systèmes de téléphonie mobile parce que je ne veux pas tomber dans le piège. Après tout, les systèmes comme iOS et Android auront des bugs, sans parler des langues les plus piratées. dans le monde.

Le moment est venu aujourd'hui de voir si PHP7 est aussi puissant que le dit la légende.

Installer deux versions de PHP

http://www.php.cn/ La dernière version de PHP7 est déjà disponible, vous pouvez la télécharger vous-même.
Afin de tester les performances de PHP5 et PHP7 (PHP6 a été abandonné, en détresse 1s), j'ai installé deux versions de php dans des répertoires différents.

Le processus d'installation est ignoré, quelle que soit l'installation du code source ou l'installation de l'outil de gestion des packages, rappelez-vous simplement votre propre chemin.

PHP7 :

# /usr/local/php7/bin/php -v
PHP 7.1.5 (cli) (built: May 13 2017 23:36:41) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

PHP5 :

# /usr/bin/php -v
PHP 5.6.30 (cli) (built: Jan 19 2017 22:31:39) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Description de l'environnement : Afin de garantir les meilleurs résultats de test, ce test est effectué directement dans l'environnement de production. Proche de la situation réelle.
Système d'exploitation : CentOS 7.2 64 bits
Configuration de base : 1 cœur 1 Go 1Mbps
Marque hôte : Tencent Cloud

Concurrence entre PHP7 et PHP5

1. Test de script PHP pur

vim test.php

$arr = array();
for ($i = 0; $i < 500000; $i++) {
        $arr[$i] = $i;
}

$tmp = array();
foreach ($arr as $i) {
    if ($i % 2 == 0) {
        $is_exists = array_key_exists($i, $arr);
        if ($is_exists) {
           array_push($tmp, $i);
        }
    }
}

Test de la version PHP5 :

time /usr/bin/php test.php 
real    0m0.301s
user    0m0.239s
sys     0m0.050s
--------------------------
time /usr/bin/php test.php
real    0m0.310s
user    0m0.241s
sys     0m0.054s
--------------------------
time /usr/bin/php test.php
real    0m0.289s
user    0m0.238s
sys     0m0.050s

Test de version PHP7 :

time /usr/local/php7/bin/php test.php

real    0m0.087s
user    0m0.063s
sys     0m0.024s
-------------------------------------
time /usr/local/php7/bin/php test.php

real    0m0.106s
user    0m0.073s
sys     0m0.033s
--------------------------------------
time /usr/local/php7/bin/php test.php

real    0m0.083s
user    0m0.061s
sys     0m0.022s

Il ressort des données que le test de script PHP pur montre que les performances de PHP7 ont été améliorées de 3 à 4 fois.

2. Test de fonctionnement de la base de données PHP

Nous créons d'abord une table utilisateur :

Table: test_user
Create Table: CREATE TABLE `test_user` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(100) NOT NULL DEFAULT &#39;&#39;,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

Insérons une donnée dans la table test_user :

insert into test_user (uid,name) values (1,"dada");
MariaDB [test]> select * from test_user;
+-----+------+
| uid | name |
+-----+------+
|   1 | dada |
+-----+------+

Créez le script de test de base de données test_db.php et assurez-vous que vos deux versions de PHP ont l'extension PDO installée.

/usr/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite

/usr/local/php7/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite

Mes deux versions de PHP ont déjà PDO installé (n'utilisez plus l'extension php_mysql, elle est obsolète, PHP7 a été complètement abandonné et mysqli n'est pas recommandé).

Ensuite, nous écrivons un script via PDO pour tester la comparaison des performances de l'exécution sélectionnée 500 000 fois :

$host = "yourHost";
$user = "yourUser";
$pass = "yourPass";
$db   = "test";
$port = 3306;

try
{
  $dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
  echo "Connected<p>";
}
catch (Exception $e)
{
  echo "Unable to connect: " . $e->getMessage() ."<p>";
}

$sql = "select  SQL_NO_CACHE * from test_user;";
$tmp = array();
for ($i=1; $i<=500000; $i++) {
  $ret = $dbh->query($sql);  
  foreach ($ret as $row) {
    $tmp[&#39;id&#39;]   = $row[&#39;id&#39;];
    $tmp[&#39;name&#39;] = $row[&#39;name&#39;];
  }
}

Test PHP5 test_db.php :

time /usr/bin/php test_db.php
real    0m48.396s
user    0m11.149s  
sys     0m3.998s

real    0m51.447s
user    0m11.800s
sys     0m4.395s

real    0m51.517s
user    0m11.733s
sys     0m4.439s

Test PHP7 test_db.php :

real    0m47.900s
user    0m9.875s
sys     0m4.130s

real    0m46.977s
user    0m9.760s
sys     0m3.983s

real    0m50.010s
user    0m10.268s
sys     0m4.307s

Cette fois, le script a exécuté 500 000 requêtes. Le temps d'exécution utilisateur des scripts exécutés par PHP7 est presque une seconde de moins que celui de PHP5 ! C'est une seconde de moins, pas une milliseconde.

3. Test du framework PHP

  • thinkphp

Affirmation nationale C'est le framework thinkphp de premier choix, choisissez le dernier thinkphp5. J'ai téléchargé la version thinkphp5.0.9 directement depuis le site officiel.

  • (1) Test d'entrée au framework

Test sous PHP5 :

time /usr/bin/php ./public/index.php
real    0m0.036s
user    0m0.026s
sys     0m0.010s

real    0m0.038s
user    0m0.026s
sys     0m0.012s

real    0m0.041s
user    0m0.032s
sys     0m0.009s

Test sous PHP7 :

time /usr/local/php7/bin/php ./public/index.php
real    0m0.027s
user    0m0.021s
sys     0m0.005s

real    0m0.027s
user    0m0.018s
sys     0m0.009s

real    0m0.025s
user    0m0.023s
sys     0m0.002s

Lors du test d'entrée, vous pouvez voir qu'il n'y a pas beaucoup de différence entre PHP et PHP7, mais PHP7 est encore légèrement plus rapide.

(2) Test de logique du cadre
Réutiliser la logique de la première étape à l'entrée du framework :

<?php
namespace app\index\controller;

class Index
{
    public function index()
    {
       $arr = array();
       for ($i = 0; $i < 500000; $i++) {
           $arr[$i] = $i;
       }

       $tmp = array();
       foreach ($arr as $i) {
           if ($i % 2 == 0) {
               $is_exists = array_key_exists($i, $arr);
               if ($is_exists) {
                   array_push($tmp, $i);
               }
          }
      }
    }
}

Version PHP5 :

time /usr/bin/php ./public/index.php
real    0m0.538s
user    0m0.463s
sys     0m0.072s

real    0m0.454s
user    0m0.386s
sys     0m0.065s

real    0m0.387s
user    0m0.331s
sys     0m0.055s

Version PHP7 :

time /usr/local/php7/bin/php ./public/index.php
real    0m0.150s
user    0m0.123s
sys     0m0.024s

real    0m0.137s
user    0m0.105s
sys     0m0.031s

real    0m0.123s
user    0m0.096s
sys     0m0.026s

Utiliser PHP7 dans thinkphp version framework, l'amélioration des performances est d'environ 4 fois celle de la version PHP5 !

  • laravel

Ensuite, nous testons le framework d'artiste PHP le plus populaire.

  • (1) Test d'entrée au cadre
    Version PHP5 :

time /usr/bin/php ./public/index.php

real    0m0.104s
user    0m0.081s
sys     0m0.022s

real    0m0.148s
user    0m0.122s
sys     0m0.025s

real    0m0.122s
user    0m0.100s
sys     0m0.021s

Version PHP

time /usr/local/php7/bin/php ./public/index.php

real    0m0.079s
user    0m0.064s
sys     0m0.015s

real    0m0.081s
user    0m0.067s
sys     0m0.014s

real    0m0.067s
user    0m0.054s
sys     0m0.013s

Nous pouvons voir que dans le test d'entrée au framework de laravel, la différence de performances entre PHP5 et PHP7 n'est pas grande, mais même les 0,081 s les plus rapides de PHP5 sont plus lents que les 0,067 s les plus lents de la version PHP7. Donc PHP7 est encore meilleur.

  • (2) Test de logique du cadre
    Essayez d'ajouter un peu de logique, comme thinkphp, pour réutiliser la logique de test.
    Modifiez d'abord le routage laravel et appelez directement la méthode d'index de UserController :

Route::get(&#39;/&#39;, &#39;UserController@index&#39;);

Écrivez la logique de test dans la méthode d'index :

public function index()
{
      $arr = array();
       for ($i = 0; $i < 500000; $i++) {
           $arr[$i] = $i;
       }

       $tmp = array();
       foreach ($arr as $i) {
           if ($i % 2 == 0) {
               $is_exists = array_key_exists($i, $arr);
               if ($is_exists) {
                   array_push($tmp, $i);
               }
          }
      }
}

Version PHP5

time /usr/bin/php ./public/index.php
real    0m0.510s
user    0m0.377s
sys     0m0.079s

real    0m0.627s
user    0m0.447s
sys     0m0.091s

real    0m0.519s
user    0m0.436s
sys     0m0.079s

Version PHP7

time /usr/local/php7/bin/php ./public/index.php

real    0m0.201s
user    0m0.167s
sys     0m0.032s

real    0m0.216s
user    0m0.174s
sys     0m0.040s

real    0m0.169s
user    0m0.134s
sys     0m0.034s

Performances PHP7 améliorées de 3 à 4 fois

Stress test

1000 requêtes, 50 simultanéités

  • Version PHP5 :

Les exemples triples sont les suivants :

Version PHP7 :

Grâce au test de stress, sous la version PHP7, vous pouvez voir le temps de demande individuel et l'achèvement de la demande temps et La durée d'exécution réelle moyenne de chaque demande de connexion prend moins de temps, et l'indicateur de performance le plus important QPS est également supérieur à celui de la version PHP5.

Test de performances Opcache de PHP7

Activer opcache :

Merde ! PHP7 avec opcache activé est en effet sur le point de décoller. Par rapport à PHP7 qui n'a pas été activé, les performances ont été améliorées de plus de dix fois, et par rapport à PHP5, elles se sont améliorées de près de 20 fois ! Demander si tu as peur !

Les données de test de script PHP sont les suivantes :

PHP7 vs PHP5.png

Processus de test de script PHP pur, les performances de PHP7 sont d'environ celui de PHP5 3 à 4 fois.

Les données du stress test sont les suivantes :

PHP5 vs PHP7 vs PHP7+OPCACHE.png

Conclusion :

Cet article Une simple comparaison entre PHP7 et PHP5 montre que les performances sont en effet améliorées de 3 à 4 fois Que ce soit dans les scripts PHP purs ou dans les frameworks, les performances de PHP7 sont cohérentes.

PHP7 est rapide, PHP7+OpCache est rapide, PHP7 est vraiment génial, la nouvelle ère de PHP est arrivée, utilisez-le vite !

Articles connexes recommandés :

Explication du principe de la fonction time strtotime() en PHP

Comparaison des ts et nts dans 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