Anfang dieses Monats gab es einen kleinen Sieg. Laut den
neuesten Ergebnissen des populären Benchmarks, der die Leistung von Programmiersprachen vergleicht, rangiert Rust an zweiter Stelle und liegt zwischen C und C ++:

Um die Leistung zu vergleichen, wird das geometrische Mittel der Laufzeit von 10 verschiedenen Programmen verwendet. Laut jüngsten Ergebnissen
übertraf Rust C ++ in 6 von 10 Aufgaben .
Unter dem Schnitt einige Details und eine Meinung zu den Zukunftsaussichten.
Wie werden die Ergebnisse richtig interpretiert?
Benchmarks Game ist ein beliebtes Projekt, bei dem Programmiersprachen anhand von Leistungsmessungen verglichen werden, die von einer Community von Programmen geschrieben wurden, die zugewiesene Aufgaben lösen. In der Regel gibt es für jede Aufgabe mindestens mehrere gut optimierte Implementierungen in derselben Sprache. Um die Ergebnisse zusammenzufassen, wird nur eine Implementierung für jede Sprache ausgewählt, die das beste Ergebnis zeigt.
Es ist zu erwarten, dass für gängige Programmiersprachen die besten Lösungsvorschläge nahe an der Leistungsgrenze der Sprachen selbst liegen. In den letzten Monaten haben C, C ++ und Rust sehr ähnliche Ergebnisse gezeigt. Wir können daher den Schluss ziehen, dass ein gut optimiertes Rust-Programm in der Leistung im Durchschnitt nicht schlechter sein sollte als gut optimierte C- oder C ++ - Programme.
Benchmarks bedeuten aber nichts!
Ja und nein
Natürlich hängt der Leistungsunterschied der verschiedenen Implementierungen für Ihre spezifische Aufgabe von vielen Faktoren ab und variiert mit Sicherheit erheblich von Aufgabe zu Aufgabe.
Beispielsweise zeigt Rust die schlechtesten Vergleichsergebnisse für Aufgaben, deren Lösungen die Verwendung regulärer Ausdrücke erfordern. Aus diesen Ergebnissen können wir schließen, dass die Implementierung von regulären Ausdrücken in Rust (Regex-Kiste) bei der Lösung von Problemen langsamer ist als PCRE2. Andererseits ist Rust C ++ bei Aufgaben, die aggressive SIMD-Operationen erfordern, deutlich überlegen.
Die allgemeine Schlussfolgerung, die gezogen werden sollte: Bei der Wahl zwischen Rust und C ++ kann die Sprachleistung kein Grund mehr sein, C ++ den Vorzug zu geben. Zumindest ohne zusätzliche Tests.
Kann sich die aktuelle Situation ändern?
Ganz. C, C ++ und Rust zeigen sehr enge Ergebnisse. Jetzt ist der Unterschied so gering, dass der Messfehler die Verteilung der ersten Plätze in der Gesamtwertung maßgeblich beeinflusst. Es ist möglich, dass Rust und C ++ im nächsten Monat wieder die Plätze wechseln, oder C wird zuerst Rust oder C ++ weichen.
Sollten wir mit einer weiteren Verbesserung der Rust-Leistung rechnen?
Ja Der Rust-Compiler ist ein relativ junges Projekt, und eine beträchtliche Anzahl möglicher Optimierungen wurde noch nicht vollständig implementiert. Das Haupthindernis ist LLVM, das formal, obwohl es ein universeller Übersetzer ist, in der Praxis gut für C / C ++ optimiert ist und nicht sehr gut mit Bytecode (IR) aus anderen Programmiersprachen zurechtkommt.
Rust ist eine strengere Programmiersprache als C und C ++. Dies bedeutet, dass Rust für ein typisches Programm dem Übersetzer (LLVM) viel mehr Garantien geben kann, die sie wiederum zur Durchführung aggressiverer Optimierungen verwenden können.
Daher ist zu erwarten, dass Rust in den kommenden Jahren seine Leistung deutlich verbessern kann. Gleichzeitig entwickeln sich C / C ++ - Compiler seit mehreren Jahrzehnten und stoßen in dieser Zeit an die Grenzen ihrer Möglichkeiten. Ihre weiteren Optimierungen werden hauptsächlich durch Sprachfunktionen und nicht durch Compiler-Implementierungen begrenzt.
Noch vor wenigen Jahren konnten sich nur wenige vorstellen, dass es möglich ist, Code mit einer hohen Effizienz zu schreiben, die C / C ++ -Implementierungen in der Leistung überlegen ist, indem eine neue Programmiersprache und sogar ein (Gott bewahre) funktionaler Ansatz verwendet werden. Ich denke, dass Rust in den kommenden Jahren das Gegenteil beweisen wird, indem er in verschiedenen Leistungstests einen selbstbewussten ersten Platz belegt. Und Sie?