Ich versuche, aus der Perspektive eines Managers eine Antwort auf die Frage zu geben: Welche allgemeine Leistungseinbuße werden wir erleiden, wenn wir die Anwendung in IronPython anstatt in C # schreiben?
Diese Frage richtet sich an diejenigen, die bereits einige Tests, Benchmarks oder eine Migration von C # zu IronPython durchgeführt haben, um die Strafe zu quantifizieren.
Ich habe eine C # -Konsolenanwendung erstellt (ich bin nicht sehr gut in C #), welches im Prinzip eine Eingabedatei mit einer Xor-Chiffre verschlüsselt.
Code unten:
%Vor%und dann die äquivalente Python-Version (ich habe SharpDevelop 4.0 verwendet, um eine ausführbare Datei zu erstellen):
%Vor%Testen Sie ihre Geschwindigkeiten mit derselben Klartext 3.827 kb Datei, Ich verstehe das:
C # :
IronPython 2.6 für .NET 4.0
Also ich denke, wir können daraus schließen, dass IronPython wesentlich langsamer ist als C #, in diesem speziellen Szenario.
Ich könnte irgendwo in meinem Code in diesen zwei Dateien einen Fehler gemacht haben, also fühlen Sie sich frei, sie darauf hinzuweisen. Ich lerne immer noch.
IronPython-Leistung wird immer etwas langsamer als C # sein, da es sich um eine interpretierte Sprache handelt. Sie können es auf jcao219 antwort sehen, obwohl dies der Fall ist kein gutes Beispiel.
Aber die Geschwindigkeit der Entwicklung ist wichtiger als die Leistung. Die Entwicklung von Anwendungen in IronPython ist für einen guten IronPython-Entwickler schneller als in C #. Natürlich sollten Sie keine Anwendung in IronPython entwickeln, wenn Sie (und Ihre Kollegen) in C # besser sind.
Die Gesamtleistung hängt stark davon ab, was der Code tut. In IronPython zu verschlüsseln ist keine gute Idee. Tabellenkalkulation ist eine gute Idee - siehe Resolver One. Sie haben darüber nachgedacht, Code von IronPython in C # zu konvertieren, aber sie haben es noch nicht gemacht, weil es nicht notwendig ist. Wenn sie den Code beschleunigen mussten, haben sie in IronPython selbst einen Weg gefunden, wie es geht.
In der Mono-Umgebung, die eine begrenzte Anzahl von Benchmarks verwendet, scheint IronPython 2.6.1 nach dem Computer Language Benchmarks Game Site .
Basierend auf meinem Verständnis werden beide Sprachen zu MSIL kompiliert, so dass theoretisch die Leistung der Anwendung identisch oder sehr nahe sein sollte, aber es gibt viel mehr, den menschlichen Faktor.
Ich kann Ihnen versichern, dass ein Programm, das ich in C # schreibe, viel schneller sein könnte als das gleiche Programm in Iron-Python, nicht weil C # schneller ist, sondern weil ich besser mit C # vertraut bin und weiß, welche Entscheidungen zu treffen sind Wenn Ihr Team besser mit C # vertraut ist, hat Ihre Anwendung eine bessere Chance auf Performance, wenn sie in C # geschrieben wird oder umgekehrt.
Dies ist nur eine persönliche Theorie, also nehmen Sie es mit einem Körnchen Salz.
Tags und Links ironpython