2 Stimmen

Vergleich von Laufzeiten

Ich versuche, einige genaue Laufzeit-Vergleiche von PHP vs. Python (und möglicherweise jede andere Sprache, die ich einschließen müssen) zu erhalten. Das Timing innerhalb eines Skripts ist nicht mein Problem, aber das Timing innerhalb eines Skripts berücksichtigt nicht alles von dem Moment an, in dem die Anforderung zur Ausführung des Skripts gestellt wird, bis zur Ausgabe.

1) Lohnt es sich überhaupt, solche Dinge zu berücksichtigen?

2) Angenommen, es lohnt sich, dies zu berücksichtigen, wie kann ich dies tun?

Ich benutze einen Mac, habe also Zugang zu Linux-Befehlen und habe keine Angst, einen Befehl zu kompilieren/erstellen, der mir hilft, ich weiß nur nicht, wie man einen solchen Befehl schreibt.

4voto

Vinko Vrsalovic Punkte 252104

Wenn es Ihnen darum geht, die Sprachen zu vergleichen, würde ich sagen, dass alles, was außerhalb dieser Sprachen liegt, für den Vergleich nicht relevant ist.

Dennoch können Sie mit dem Zeitbefehl alles messen und mit der Zeitmessung in einem Skript vergleichen.

Zum Beispiel so:

$ time script.php
HI!

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

Es zeigt Ihnen die Uhrzeit, die Benutzerzeit (php-Interpreter) und die Systemzeit (OS-Zeit) an.

Wenn Sie an Web denken, dann wird es viel schwieriger, weil Sie den Webserver-Overhead mischen würden, und das ist nicht immer leicht zu vergleichen, wenn Sie z. B. WSGI vs. mod_php verwenden. Dann müssten Sie auch in die Webserver-Teile der Kette Probes einbauen

1voto

Loren Segal Punkte 3258
  1. Es lohnt sich, die Geschwindigkeit zu berücksichtigen, wenn Sie Ihren Code optimieren. Sie sollten in der Regel wissen, warum Sie Ihren Code optimieren (z. B. weil eine bestimmte Aufgabe in Ihrer bestehenden Codebasis zu lange dauert, und nicht, weil ich gehört habe, dass PHP langsamer ist als Python). Das ist no Es lohnt sich, die Geschwindigkeit in Betracht zu ziehen, wenn Sie nicht vorhaben, die Sprache zu wechseln. Nur weil ein winziges Modul etwas etwas schneller macht, heißt das nicht, dass es eine gute Idee ist, Ihre Anwendung in einer anderen Sprache neu zu schreiben. Neben der Geschwindigkeit gibt es noch viele andere Faktoren bei der Auswahl einer Sprache.

  2. Sie führen natürlich einen Benchmark durch. Führen Sie die beiden Codebasen mehrmals aus und vergleichen Sie die Zeiten. Sie können die Zeit Befehl, wenn beide Skripte von der Shell aus ausführbar sind, oder verwenden Sie die jeweiligen Benchmarking-Funktionen der beiden Sprachen; der letztere Fall hängt natürlich stark von der jeweiligen Sprache ab.

1voto

Mike Stone Punkte 43560

Nun, Sie können den Befehl "time" zur Hilfe nehmen:

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

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

Und das wird die Zeitmessung außerhalb der Umwelt umgehen.

Was die Frage betrifft, ob Sie tatsächlich Zeit, dass zusätzliche Arbeit... das hängt ganz davon ab, was Sie tun. Ich nehme an, dies ist für eine Art von Web-Anwendung von irgendeiner Art, so dass es davon abhängt, wie das Framework, das Sie verwenden tatsächlich funktioniert ... tut es eine Art von kompilierten (oder geparst) Version des Skripts zwischengespeichert? Wenn ja, dann wird die Startzeit völlig irrelevant sein (da der erste Treffer der einzige ist, in dem die Startzeit existiert).

Stellen Sie außerdem sicher, dass Sie Ihre Tests in einer Schleife durchführen, damit Sie den ersten Durchlauf abziehen können (und die Kosten des ersten Durchlaufs in Ihren Bericht aufnehmen können, wenn Sie möchten). Ich habe einige Tests in Java durchgeführt, und der erste Durchlauf ist immer am langsamsten, weil das JIT seine Arbeit macht (und die gleiche Art von Hit gibt es vielleicht in PHP, Python und anderen Sprachen, die Sie ausprobieren).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X