Avant-propos
Personnellement, j'utilise toujours PHP5.6, et la version 7.3 est uniquement destinée aux tests, car PHP7 prend déjà en charge le typage fort et ne prend plus en charge les appels basés sur la méthode de fonction de chaînes, donc. la version PHP de mon projet personnel est bloquée à 5.6.
Je veux l'essayer récemment et essayer la vitesse de PHP5.6, 7.3 et Tomcat7, 8 et 9. J'ai lu quelques articles avant de dire que PHP exploite la base de données plus rapidement, tandis que Java gère les affaires. La logique est plus rapide, je souhaite donc confier la logique métier à Java et confier les opérations de base de données à PHP.
Mais est-ce plus rapide de cette façon ? Comparez, les données parlent d'elles-mêmes !
Au fait, j'utilise le panneau Pagoda pour la gestion du serveur, et l'installation du logiciel de service se fait dans le panneau Pagoda.
Préface du test
Lors du test, j'ai constaté que les résultats de Tomcat7 et 8.5 étaient similaires. On estime que 9 aura également le même résultat, donc je. ne testera pas Tomcat9. La partie Tomcat teste uniquement 7 et 8.5 dans le traitement de la logique métier, et le reste teste uniquement 8.5
Configuration du serveur
● Système : CentOS Linux 7.6.1810 (Core)
● Version Pagoda : 6.9.8
● Fabricant : Baidu Smart Cloud
● Type : calcul intensif ic3
● CPU : 1 cœur
● Mémoire : 1 Go
Comparaison de vitesse
Vitesse de traitement de la logique métier
Ajouter de 0 à 10000000
PHP5.6
<?php $time_start = microtime(true); $count = 0; for ($i = 0; $i < 10000000; ++ $i) { $count += $i; } $time_end = microtime(true); echo ($time_end - $time_start); // 结果:0.34648394584656
Résultat : 0.34648394584656
PHP7.3
<?php $time_start = microtime(true); $count = 0; for ($i = 0; $i < 10000000; ++ $i) { $count += $i; } $time_end = microtime(true); echo ($time_end - $time_start); // 结果:0.12653613090515
Résultat : 0,12653613090515
Conclusion : PHP7.3 est trois fois plus rapide que 5.6 dans le traitement de la logique métier
Tomcat7
<% java.util.Date d1 = new java.util.Date(); long start_time = d1.getTime(); // 单位:毫秒 long count = 0; for (long i = 0; i <= 10000000; ++ i) { count += i; } java.util.Date d2 = new java.util.Date(); long end_time = d2.getTime(); // 单位:毫秒 out.println(end_time - start_time); // 结果:17毫秒 %>
Résultat : 17 millisecondes, Après quelques rafraîchissements supplémentaires, cela devient 4~5 millisecondes, principalement 4 millisecondes
Tomcat8.5
Résultat : 99 millisecondes, même après quelques autres rafraîchit 4 millisecondes
Résumé du test de logique métier
Après tout, Java est un langage semi-compilé et semi-interprété, il est donc normal que PHP7 atteigne plus de 100 millisecondes, mais PHP5 est un peu plus lent à seulement 300 multimillisecondes
Test d'E/S de base de données
Utilisez la préparation et l'exécution de PDO pour tester
PHP5.6
● INSERT insérer 10 000 lignes : 37,575320005417 secondes
● SELECT lit 10 000 lignes : 0,010236978530884 secondes
● La boucle SELECT lit 10 000 lignes : 1,0460438728333 secondes
● MISE À JOUR mise à jour 1 Ligne 0000 : 0,044967889785767 secondes
● Boucle UPDATE pour mettre à jour 10 000 lignes : 36,463224887848 secondes
● DELETE pour supprimer 10 000 lignes : 0,034432888031006 secondes
● Boucle DELETE pour supprimer 10 000 lignes : 37.19838404 6555 secondes
PHP7.3
● INSERT insère 10000 lignes : 33,949599027634 secondes
SELECT lit 10000 lignes : 0,02126002 3117065 secondes
● La boucle SELECT lit 100 00 lignes : 1,0032389163971 secondes.
● La boucle UPDATE met à jour 10 000 lignes : 0,040410995483398 secondes
La boucle UPDATE met à jour 10 000 lignes : 92 secondes
● SUPPRIMER supprime 1 ligne 0000 : 0,046122074127197 secondes
● Boucle DELETE pour supprimer 10 000 lignes : 35,682950973511 secondes
Résumé PHP : Il n'y a presque aucune différence de version dans les E/S de la base de données et l'exécution une seule instruction est plus rapide que l'exécution d'une instruction en boucle
Tomcat8.5
La première exécution avant la compilation, la deuxième exécution après la compilation
● INSERT insère 10 000 lignes : avant compilation : 39,738 secondes, compile Après : 37,104 secondes
● SELECT lit 10 000 lignes : avant compilation : 0,079 seconde, après compilation : 0,028 seconde
● SELECT lit la boucle 10 000 lignes : avant compilation : 2,303 secondes, après compilation : 1,775 secondes
● UPDATE met à jour 10 000 lignes : avant compilation : 0,060 secondes, après compilation : 0,040 secondes
● La boucle UPDATE met à jour 10 000 lignes : avant compilation : 43,326 secondes, après compilation : 40,847 secondes
● DELETE supprime 10 000 lignes : première exécution : 0,137 secondes
● La boucle DELETE supprime 10 000 lignes : première exécution : 40,597 secondes
Résumé : Java a de fortes capacités de logique métier, mais la vitesse d'E/S de la base de données est plus lente que PHP, alors que l'inverse est vrai pour PHP.
Test de développement hybride
La logique métier est écrite en Java, PHP appelle Java via CURL, teste la vitesse
Résultat :
Premier test : 0,51814317703247 secondes
Deuxième test : 0,016547918319702 secondes
Résumé :
Le premier Le test peut prendre du temps car le côté Java doit être compilé, mais le deuxième test n'a plus besoin d'être compilé, il est donc très rapide.
Plusieurs tests ont été effectués plus tard, et les résultats étaient tous satisfaisants, et la vitesse était environ 10 fois plus rapide que PHP7.
Le seul inconvénient du développement mixte est que l'efficacité du développement n'est pas élevée, ce qui peut causer plus d'embûches, mais en termes de fonctionnement, chacun peut profiter de ses avantages.
J'ai personnellement une attitude neutre à cet égard, sans le recommander ni m'y opposer, car divers projets peuvent avoir des besoins pertinents et cette méthode peut être le meilleur choix.
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!