Maison >développement back-end >PHP7 >Présentation de la comparaison entre php7 et php5
Recommandé (gratuit) : PHP7
PHP7 était censé être beaucoup plus rapide que l'ancienne version lors de sa première sortie Times, la vitesse et l'efficacité de divers frameworks ou systèmes open source 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 et ne rien dire.
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 génial que le dit la légende.
Installez deux versions de PHP
http://php.net/ possède déjà la dernière version de PHP7, vous pouvez la télécharger vous-même.
Afin de tester les performances de PHP5 et PHP7 (PHP6 a été abandonné, 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 -vPHP 7.1.5 (cli) (built: May 13 2017 23:36:41) ( NTS )Copyright (c) 1997-2017 The PHP GroupZend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
PHP5 :
# /usr/bin/php -vPHP 5.6.30 (cli) (built: Jan 19 2017 22:31:39)Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Description de l'environnement : Afin d'assurer le meilleur effet de test, ce test a été réalisé directement dans l'environnement de production, qui est plus 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
Bataille 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.301suser 0m0.239ssys 0m0.050s--------------------------time /usr/bin/php test.phpreal 0m0.310suser 0m0.241ssys 0m0.054s--------------------------time /usr/bin/php test.phpreal 0m0.289suser 0m0.238ssys 0m0.050s
Test de la version PHP7 :
time /usr/local/php7/bin/php test.phpreal 0m0.087suser 0m0.063ssys 0m0.024s-------------------------------------time /usr/local/php7/bin/php test.phpreal 0m0.106suser 0m0.073ssys 0m0.033s--------------------------------------time /usr/local/php7/bin/php test.phpreal 0m0.083suser 0m0.061ssys 0m0.022s
Il ressort des données que grâce aux tests de scripts PHP purs, on peut voir que les performances de PHP7 ont été améliorées de 3 à 4 fois.
Test de fonctionnement de la base de données 2.php
Nous créons d'abord une table utilisateur :
Table: test_userCreate Table: CREATE TABLE `test_user` (`uid` int(11) NOT NULL AUTO_INCREMENT,`name` char(100) NOT NULL DEFAULT '',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 pdopdo_mysqlpdo_sqlite/usr/local/php7/bin/php -m|grep pdopdo_mysqlpdo_sqlite
PDO est installé sur mes deux versions de PHP (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['id'] = $row['id'];$tmp['name'] = $row['name'];}}
Test PHP5 test_db.php :
time /usr/bin/php test_db.phpreal 0m48.396suser 0m11.149ssys 0m3.998sreal 0m51.447suser 0m11.800ssys 0m4.395sreal 0m51.517suser 0m11.733ssys 0m4.439s
Test PHP7 test_db.php :
real 0m47.900suser 0m9.875ssys 0m4.130sreal 0m46.977suser 0m9.760ssys 0m3.983sreal 0m50.010suser 0m10.268ssys 0m4.307s
Cette fois, le script a exécuté 500 000 requêtes. Le temps d'exécution utilisateur du script exécuté par PHP7 est presque une seconde de moins que celui de PHP5 ! C'est une seconde de moins, pas une milliseconde.
Test du framework 3.PHP
thinkphp
Affirmation domestique 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 dans le framework
Test sous PHP5 :
time /usr/bin/php ./public/index.phpreal 0m0.036suser 0m0.026ssys 0m0.010sreal 0m0.038suser 0m0.026ssys 0m0.012sreal 0m0.041suser 0m0.032ssys 0m0.009s
Test sous PHP7 :
time /usr/local/php7/bin/php ./public/index.phpreal 0m0.027suser 0m0.021ssys 0m0.005sreal 0m0.027suser 0m0.018ssys 0m0.009sreal 0m0.025suser 0m0.023ssys 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 framework
Réutiliser la logique de la première étape à l'entrée du framework :
<?phpnamespace 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.phpreal 0m0.538suser 0m0.463ssys 0m0.072sreal 0m0.454suser 0m0.386ssys 0m0.065sreal 0m0.387suser 0m0.331ssys 0m0.055s
Version PHP7 :
time /usr/local/php7/bin/php ./public/index.phpreal 0m0.150suser 0m0.123ssys 0m0.024sreal 0m0.137suser 0m0.105ssys 0m0.031sreal 0m0.123suser 0m0.096ssys 0m0.026s
En utilisant la version PHP7 dans le framework thinkphp, 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 dans le framework
Version PHP5 :
time /usr/bin/php ./public/index.phpreal 0m0.104suser 0m0.081ssys 0m0.022sreal 0m0.148suser 0m0.122ssys 0m0.025sreal 0m0.122suser 0m0.100ssys 0m0.021s
Version PHP
time /usr/local/php7/bin/php ./public/index.phpreal 0m0.079suser 0m0.064ssys 0m0.015sreal 0m0.081suser 0m0.067ssys 0m0.014sreal 0m0.067suser 0m0.054ssys 0m0.013s
On peut voir dans Selon le test d'entrée au framework Laravel, il n'y a pas beaucoup de différence de performances entre PHP5 et PHP7, mais même la version la plus rapide de PHP5, 0,081 s, est plus lente que la version la plus lente de PHP7, 0,067 s. Donc PHP7 est encore meilleur.
(2) Test de logique du framework
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('/', 'UserController@index');
É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.phpreal 0m0.510suser 0m0.377ssys 0m0.079sreal 0m0.627suser 0m0.447ssys 0m0.091sreal 0m0.519suser 0m0.436ssys 0m0.079s
Version PHP7
time /usr/local/php7/bin/php ./public/index.phpreal 0m0.201suser 0m0.167ssys 0m0.032sreal 0m0.216suser 0m0.174ssys 0m0.040sreal 0m0.169suser 0m0.134ssys 0m0.034s
Performances PHP7 améliorées de 3 à 4 fois
Stress test
1000 requêtes, 50 simultanées
Version PHP5 :
Les échantillons triples sont les suivants :
Version PHP7 :
Grâce au test de stress, sous la version PHP7, vous pouvez voir que la moyenne du temps de requête individuel et du temps d'achèvement de la requête, ainsi que le temps d'exécution réel de chaque requête de connexion, prennent moins de temps. Le plus important est que l'indice de performance 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
Processus de test de script php pur, Performances de PHP7 Environ 3 à 4 fois supérieures à celles de PHP5.
Les données du stress test sont les suivantes :
PHP5 vs PHP7 vs PHP7+OPCACHE
Conclusion :
Cet article fait une comparaison simple entre PHP7 et PHP5 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 très rapide, PHP7+OpCache est très rapide, PHP7 est vraiment génial, la nouvelle ère de PHP est arrivée, dépêchez-vous et utilisez-la !
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!