IronPython-Leistung

7

Ich überlege, IronPython als Skriptsprache für eine Anwendung, die ich schreibe, einzubetten. Um es auszuprobieren, habe ich IronPython 2.0 heruntergeladen und den interaktiven Interpreter gestartet. Das Starten der Sache dauert ungefähr 5 Sekunden auf meinem Intel Quad Core mit 6 GB Speicher. Ich kann mir kaum vorstellen, wie viel Verzögerung das für eine weniger leistungsfähige Maschine bedeuten würde.

Basierend auf diesen Benchmarks scheint es so Die Leistung von IronPython ist eigentlich gar nicht so schlecht. Oder ist es? Habe ich während der Installation etwas falsch konfiguriert? Oder ist das ein Problem mit dem interaktiven Interpreter?

    
Jason Baker 08.02.2009, 17:23
quelle

5 Antworten

13

IronPythons Leistung ist wirklich ziemlich gut. Die Startleistung, die Sie erhalten, hat mit der .NET-Laufzeit zu tun. .NET-Anwendungen haben in der Regel eine langsame Startzeit, da viele Assemblys geladen werden und einige von ihnen (zumindest einige Klassen) im Handumdrehen kompiliert werden.

Dies ist das erwartete Verhalten in .NET. Die tatsächliche Laufzeitleistung ist viel besser. Sogar die Startleistung kann verbessert werden, indem Sie die IronPython-Assembly vorkompilieren und eine Kopie in den GAC: globalen Assemblycache Ihres Computers einfügen. Dies kann mithilfe der gacutil.exe erfolgen.

    
Konrad Rudolph 08.02.2009, 17:32
quelle
4

Sie können auch die Standardbibliothek, die mit IronPython geliefert wird, vorkompilieren, um eine wesentlich bessere Startleistung zu erzielen. Es gibt ein pyc.py-Beispiel, das dies tun kann.

    
xxaa 08.02.2009 18:24
quelle
2

Die Anzahl der Kerne wird keinen großen Unterschied zu Startup machen:)

Der Startvorgang ist auf einem 64-Bit-Betriebssystem aufgrund von Leistungsunterschieden zwischen 32-Bit- und 64-Bit-Jittern besonders langsam. Wenn Sie ein 64-Bit-Betriebssystem verwenden, aber keinen 64-Bit-Prozess benötigen, versuchen Sie Folgendes:

  1. Kopieren Sie ipy.exe auf ipy32.exe
  2. Verwenden Sie corflags.exe aus dem Windows SDK zu Markieren Sie ipy32.exe als 32-Bit ausführbar mit den Worten "corflags / 32bit + ipy32.exe ".

Die 32-Bit-Version sollte Ihnen einen viel besseren Start geben - aber immer noch nicht annähernd so gut wie der CPython-Start. Aber daran arbeiten wir weiter.

    
Curt Hagenlocher 19.02.2009 06:15
quelle
1

Die Startzeit und die laufende Leistung stehen nicht in direktem Zusammenhang. Java-Applets haben den größten Teil ihres Rufs für Langsamkeit, nicht weil das Applet langsam lief, sondern weil es die Laufzeit in Minuten brauchte, um loszulegen. Wenn Sie eine Desktop-App erstellen, würde ich mich über die Startleistung Gedanken machen. Wenn Ihr laufender Server-Code die Laufzeit immer angibt, ist dies kein Problem.

    
hacken 08.02.2009 17:36
quelle
1

Es gibt Verbesserungen in der Startzeit des Interpreters im IronPython-Code auf CodePlex. Obwohl ich im Vergleich zu CPython immer noch Verzögerungen sehe, gibt es deutliche Verbesserungen.

    
MattK 09.03.2009 00:36
quelle

Tags und Links