2009-02-08 8 views
7

Sto considerando l'inclusione di IronPython come linguaggio di scripting per un'applicazione che sto scrivendo. Quindi, per provarlo, ho scaricato IronPython 2.0 e ho attivato l'interprete interattivo. L'avvio di questa operazione richiede circa 5 secondi sul mio Intel Quad Core con 6 gigabyte di memoria. Non riesco a immaginare quanto possa essere un ritardo per una macchina meno potente.Prestazioni IronPython

Basato su these benchmarks, sembra che le prestazioni di IronPython in realtà non siano troppo terribili. O è? Ho configurato erroneamente qualcosa durante l'installazione? O questo è un problema con l'interprete interattivo?

risposta

13

Le prestazioni di IronPython sono davvero buone. La penalità delle prestazioni di avvio che si ottiene ha a che fare con il runtime .NET. Le applicazioni .NET in genere hanno un tempo di avvio lento perché vengono caricati molti assembly e alcuni di essi (almeno alcune classi) vengono compilati al volo.

Questo comportamento è previsto in .NET. Le prestazioni di runtime effettive sono molto migliori. Anche le prestazioni di avvio possono essere migliorate pre-compilando l'assembly IronPython e inserendo una copia in GAC: la cache di assembly globale della macchina. Questo può essere fatto usando lo gacutil.exe.

1

Il tempo di avvio e le prestazioni di funzionamento non sono direttamente correlate. Le applet Java hanno ottenuto la maggior parte della loro reputazione per lentezza, non perché l'applet funzionasse lentamente ma perché ci volevano i minuti di esecuzione per iniziare. Se stai facendo un'app desktop, mi preoccuperei delle prestazioni di avvio. Se il tuo codice server in esecuzione in cui il tempo di esecuzione è sempre attivo, non è un problema.

4

È inoltre possibile eseguire la precompilazione della libreria standard fornita con IronPython per ottenere prestazioni di avvio migliori. C'è un campione pyc.py che può farlo.

+1

Ho appena provato questo e ottengo prestazioni _worse_ marginalmente. Non ho idea del perché. – Cameron

2

Il numero di core non sta andando a fare molta differenza per STARTUP perf :)

avvio è particolarmente lento in un sistema operativo a 64 bit a causa delle differenze tra la performance a 32 bit e 64 bit nervosismo. Se si utilizza un sistema operativo a 64 bit, ma non hanno bisogno di un processo a 64 bit, provare quanto segue:

  1. copia ipy.exe a ipy32.exe
  2. uso corflags.exe da Windows SDK a contrassegnare ipy32.exe come eseguibile a 32 bit dicendo "corflags /32 bit + ipy32.exe".

La versione a 32 bit dovrebbe fornire un avvio molto migliore, anche se ancora lontanamente buono come l'avvio di CPython. Ma questo è qualcosa su cui stiamo continuando a lavorare.

1

Ci sono miglioramenti nel tempo di avvio dell'interprete nel codice IronPython su CodePlex. Anche se vedo ancora ritardi rispetto a CPython, c'è un miglioramento significativo.