Question

J'essaie d'obtenir des comparaisons d'exécution précises entre PHP et Python (et éventuellement avec tout autre langage que je dois inclure). La synchronisation dans un script n’est pas mon problème, mais la synchronisation dans un script ne tient pas compte de tout, à partir du moment où la demande est faite pour exécuter le script et la générer.

  

1) Vaut-il vraiment la peine de prendre en compte de telles choses?

     

2) En supposant que cela vaille la peine d'être pris en compte, comment puis-je procéder?

J'utilise un Mac, j'ai donc accès aux commandes Linux et je n'ai pas peur de compiler / créer une commande pour m'aider, je ne sais pas comment écrire une telle commande.

Était-ce utile?

La solution

Si votre idée est de comparer les langues, je dirais que rien en dehors de ces langues n’est pas pertinent à des fins de comparaison.

Néanmoins, vous pouvez utiliser la commande time pour tout mesurer et le comparer au minutage d'un script.

Comme ceci:

$ time script.php
HI!

real    0m3.218s
user    0m0.080s
sys     0m0.064s

Il vous donnera l'heure d'horloge, l'heure utilisateur (interpréteur PHP) et l'heure système (heure du système d'exploitation)

Si vous pensez au Web, cela devient beaucoup plus difficile, car vous mélangez la surcharge du serveur Web et il n’est pas toujours facile de comparer si, par exemple, vous utilisez WSGI v / s mod_php. Ensuite, vous devez également insérer des sondes dans les parties Web de la chaîne

Autres conseils

  1. Il est utile de prendre en compte la vitesse si vous optimisez le code. Vous devez généralement savoir pourquoi vous optimisez le code (comme dans le cas suivant: une tâche spécifique dans votre base de code prend trop de temps, pas "j'ai entendu dire que PHP est plus lent que Python"). Il n’est pas intéressant de prendre en compte la vitesse si vous ne prévoyez pas réellement de changer de langue. Ce n'est pas une bonne idée qu'un module infime accélère légèrement la cadence. Outre la rapidité, le choix d’une langue dépend de nombreux autres facteurs.

  2. Votre point de repère, bien sûr. Exécutez les deux bases de code plusieurs fois et comparez le timing. Vous pouvez utiliser la commande time si les deux scripts sont exécutables à partir du shell. , ou utiliser les fonctionnalités de benchmarking respectives de chaque langue; ce dernier cas dépend naturellement beaucoup de la langue réelle.

Eh bien, vous pouvez utiliser le "temps". commande pour aider:

you@yourmachine:~$ time echo "hello world"
hello world

real    0m0.000s
user    0m0.000s
sys 0m0.000s
you@yourmachine:~$ 

Et cela évitera le timing en dehors de l'environnement.

Quant à savoir si vous avez besoin de chronométrer ce travail supplémentaire, cela dépend entièrement de ce que vous faites. Je suppose que cela s’applique à une sorte d’application Web, alors cela dépend de la façon dont le framework que vous utilisez fonctionne réellement ... cache-t-il une sorte de version compilée (ou analysée) du script? Si tel est le cas, le temps de démarrage sera totalement sans importance (puisque le premier hit sera le seul dans lequel le temps de démarrage existe).

Assurez-vous également que vos tests sont exécutés en boucle pour que vous puissiez actualiser le premier cycle (et inclure le coût du premier cycle dans votre rapport si vous le souhaitez). J'ai fait quelques tests en Java, et la première exécution est toujours la plus lente en raison de la bonne exécution du JIT (et le même type de succès peut exister en PHP, Python et tous les autres langages que vous essayez d'utiliser).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top