Maison >développement back-end >tutoriel php >Analyse détaillée d'exemples de codes pour comparer les performances de Golang, Python, PHP, C, C, Java et Nodejs
Cet article présente des informations pertinentes sur la comparaison des performances de golang, python, php, c, c, java et Nodejs. Les amis qui en ont besoin peuvent s'y référer <.>
Lorsque je travaillais sur PHP/C/Go/Py, j'ai soudain eu l'idée de faire une simple comparaison des performances des récentslangages de programmation grand public Quant à savoir comment faire. comparez, je dois encore utiliser l'algorithme magique de Fibonacci. C’est peut-être plus couramment utilisé ou amusant.
Bon, parler ne coûte rien, montre-moi ton code ! Ouvrez ton Mac, clique sur Clion et commence à coder ! 1. Pourquoi Go est-il le premier Parce que je l'utilise personnellement récemment et je me sens très bienpackage main import "fmt" func main(){ fmt.Println(fibonacci(34)) } func fibonacci(i int) int{ if(i<2){ return i; } return fibonacci(i-2) + fibonacci(i-1); }Jetons un coup d'oeil avec Go1.7 d'abord :Le code est le suivant :
qiangjian@localhost:/works/learnCPP$ go version && time go build fib.go && time ./fibgo version go1.7.5 darwin/amd64 real 0m0.206suser 0m0.165ssys 0m0.059s real 0m0.052suser 0m0.045ssys 0m0.004sEnsuite, regardez la version 1.8 :
qiangjian@localhost:/works/learnCPP$ go18 version && time go18 build fib.go && time ./fibgo version go1.8 darwin/amd64 real 0m0.204suser 0m0.153ssys 0m0.062s real 0m0.051suser 0m0.045ssys 0m0.003sJe ne peux pas faire la différence, mais la version officielle 1.8 a amélioré l'optimisation de 20 % dans des aspects tels que GC et Compile. Peut-être que cette démo est trop simple. 2. Python a été très populaire récemment, alors comparons
def fibonacci(i): if i<2: return i return fibonacci(i-2) + fibonacci(i-1) print(fibonacci(34))Jetons d'abord un coup d'œil à python2.7
qiangjian@localhost:/works/learnCPP$ python2 -V && time python2 ./fib.py Python 2.7.13 5702887 real 0m2.651s user 0m2.594s sys 0m0.027sPuis est arrivé Py 3.5
qiangjian@localhost:/works/learnCPP$ python3 -V && time python3 ./fib.py Python 3.5.1 real 0m3.110s user 0m2.982s sys 0m0.026sLe plus gros problème avec Py peut être vu d'un coup d'œil : plus vous la mise à niveau, plus cela devient lent. Et ce qui est terrible, c'est que de nombreuses syntaxes sont incompatibles, mais il est généralement bon d'écrire des algorithmes et des petits programmes. À d'autres moments, oubliez ça et utilisez Go. 3. PHP, je l'utilise beaucoup au travail, je dois donc le comparer
<?php function fibonacci($i){ if($i<2) return $i; return fibonacci($i-2) + fibonacci($i-1); } echo fibonacci(34);Puisque j'utilise principalement php5.4 pour mon travail , donc la vague vient en premier :
qiangjian@localhost:/works/learnCPP$ php54 -v && time php54 fib.php PHP 5.4.43 (cli) (built: Dec 21 2016 12:01:59) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies real 0m2.288s user 0m2.248s sys 0m0.021sL'environnement de test est 5.6, donc la vague vient aussi :
qiangjian@localhost:/works/learnCPP$ php -v && time php fib.php PHP 5.6.28 (cli) (built: Dec 6 2016 12:38:54) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies real 0m2.307s user 0m2.278s sys 0m0.017sLes nouveaux projets et les choses que vous jouez vous-même sont tous en php7, veuillez consulter :
qiangjian@localhost:/works/learnCPP$ php -v && time php fib.php PHP 7.1.2 (cli) (built: Feb 17 2017 10:52:17) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies 5702887 real 0m0.815s user 0m0.780s sys 0m0.015sJe pense que php7 et 5 sont complètement différents, pas du tout la même chose, et les progrès sont énormes, je compte sur Brother Bird pour me donner un coup de pouce ! Il est recommandé à tout le monde d'utiliser php7.4.C est ma base théorique préférée Bien sûr, je parle du C 11/14, pas du vieux c99 antique etc.
#include <iostream> constexpr int fibonacci(const int i){ if(i<2) return i; return fibonacci(i-2) + fibonacci(i-1); } int main() { fibonacci(34); return 0; }
qiangjian@localhost:/works/learnCPP$ time g++-6 -o a.bin main.cpp && time ./a.bin real 0m0.378s user 0m0.254s sys 0m0.104s real 0m0.050s user 0m0.043s sys 0m0.002s
qiangjian@localhost:/works/learnCPP$ time g++-6 -O2 -o a.bin main.cpp && time ./a.bin real 0m0.874s user 0m0.344s sys 0m0.180s real 0m0.034s user 0m0.019s sys 0m0.004s
5. C a également écrit un
#include <stdio.h> int fibonacci(int i){ if(i<2) return i; return fibonacci(i-2) + fibonacci(i-1); } int main(){ printf("%d",fibonacci(34)); }
qiangjian@localhost:/works/learnCPP$ time gcc-6 -o c.bin fib.c && time ./c.bin real 0m0.341s user 0m0.063s sys 0m0.101s real 0m0.049s user 0m0.044s sys 0m0.002s
qiangjian@localhost:/works/learnCPP$ time gcc-6 -O2 -o c.bin fib.c && time ./c.bin real 0m0.143s user 0m0.065s sys 0m0.034s real 0m0.034s user 0m0.028s sys 0m0.002s
6. Java est ce que j'ai le moins envie d'écrire Bien qu'il soit très populaire, il semble trop gonflé
class Fib{ public static void main(String[] args){ System.out.println(fibonacci(34)); } static int fibonacci( int i){ if(i<2) return i; return fibonacci(i-2) + fibonacci(i-1); } }
qiangjian@localhost:/works/learnCPP$ java -version && time javac Fib.java && time java Fib java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) real 0m0.952s user 0m1.302s sys 0m0.144s real 0m0.150s user 0m0.123s sys 0m0.025s
7. Bien sûr, le dernier à apparaître est le toujours populaire
javascript, non, pour être précis, c'est Nodejs (cette chose n'a rien à voir avec java)
function fibonacci(i){ if(i<2) return i; return fibonacci(i-2) + fibonacci(i-1); } console.log(fibonacci(34))
qiangjian@localhost:/works/learnCPP$ node -v && time node fib.js v6.10.0 real 0m0.332s user 0m0.161s sys 0m0.062sChr
omium et à la communauté open source. Si Nodejs fonctionne vraiment de manière stable, il ne sera peut-être pas vraiment capable d'unifier le "monde des programmes". Bien sûr, je ne fais que parler, ne le prenez pas trop au sérieux.
Prenons une photo :
Résumé :
J'ai l'impression que chaque langue a des usages différents, et la performance n'est qu'un indicateur unique . Ce que j'apprécie le plus, c'est : la lisibilité, la maintenabilité, la portabilité, la robustesse, l'évolutivité, puis les performances. De plus, le matériel moderne est de plus en plus puissant. Les téléphones portables sont souvent équipés de 8G, les CPU ont rattrapé les CPU des PC il y a 5 ans et les SSD sont de plus en plus populaires... Je suis plus optimiste à propos de Golang/php/python, et je fais également attention au C moderne, comme 14 et 17. Quant à rust,
swift, java, scala, oubliez ça, cela dépend principalement des besoins personnels liés à la pile technologique de l’entreprise. Ha ha ! Écrivons ceci d’abord !
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!