Dieses Projekt versucht, die Geschwindigkeit verschiedener Programmiersprachen zu vergleichen. In diesem Projekt geht es uns nicht wirklich darum, eine genaue Berechnung von Pi zu erhalten. Wir wollen nur sehen, wie schnell die Programmiersprachen sind.
Für den Vergleich wird eine Implementierung der Leibniz-Formel für π verwendet.
Hier ist ein Video, das erklärt, wie es funktioniert: π von Hand berechnen
Die Ergebnisse finden Sie hier: https://niklas-heer.github.io/speed-comparison/
Ich bin kein Experte in all diesen Sprachen, also nehmen Sie meine Ergebnisse mit Vorsicht.
Außerdem zeigen die Ergebnisse, wie gut die Sprachen mit Gleitkommaoperationen umgehen können, was nur ein Aspekt einer Programmiersprache ist.
Sie können auch gerne einen Beitrag leisten und mir helfen, meinen möglicherweise schrecklichen Code in einigen Sprachen zu reparieren. ?
Alles wird von einem Docker-Container und einem Bash-Skript ausgeführt, das die Programme aufruft.
Zur Messung der Ausführungszeit wird ein Python-Paket verwendet.
Docker
Earthly ermöglicht es, alles mit einem einzigen Befehl auszuführen:
earthly --config earthly-config.yml +all
Dadurch werden alle Aufgaben ausgeführt, um alle Messungen zu erfassen und anschließend die Analyse durchzuführen.
Um Daten für alle Sprachen zu sammeln, führen Sie Folgendes aus:
earthly --config earthly-config.yml +collect-data
Um Daten für eine einzelne Sprache zu sammeln, führen Sie Folgendes aus:
earthly --config earthly-config.yml + < replace me with language name >
Um die kombinierte CSV-Datei aus allen Ergebnissen zu generieren, verwenden Sie diesen Befehl:
earthly --config earthly-config.yml +analysis
Warum zählt man auch das Lesen einer Datei und das Drucken der Ausgabe?
Weil ich denke, dass dies ein realistischeres Szenario ist, um Geschwindigkeiten zu vergleichen.
Sind die Kompilierzeiten in den Messungen enthalten?
Nein, sie sind nicht enthalten, da dies bei der Ausführung des Programms in der realen Welt auch vorher geschehen würde.
Die Liste der Mitwirkenden wird automatisch generiert.
Niklas Heer | Francesco Alemanno | Yu Zhu | Jerry Ling | Gaute Hope | frak0d |
Jonathan Carroll | Sıddık AÇIL | Serge Gini | Gabriel Baraldi | Samuel | Joe Landman |
Sandeep Kumar | mattn | Páll Haraldsson | Oscar Smith | Michael Abbott | Lorenzo Gabriele |
LazyKernel | Chris Nürnberger | DirkieDurky | Gui Zhen Wei | RDPatrickTheDev | Stolz |
Sergej Trofimow | Thomas A. Caswell | Tomohiro | genmeblog | Yuta Imazu | Kohei Hosoki |
Yinheli |
Zur Erstellung von Hyperfine, die für das grundlegende Benchmarking verwendet wird.
Dieses Projekt wurde von Thomas inspiriert, der in seinem Blog einen ähnlichen Vergleich durchgeführt hat.