PDA

View Full Version : [PYTHON, C] Beyond bytecode: a wordcode-based Python


cdimauro
11-05-2009, 19:15
Ho finito poco fa di creare su Google Code tutto il materiale relativo al mio progetto, che potete anche scaricare con SubVersion.

Trovate tutto a questo (http://code.google.com/p/wpython/) indirizzo.

Nella sezione download trovate le slide che ho presentato alla PyCon3 (http://www.pycon.it/pycon3/programma/) in formato sia PowerPoint che PDF.

Le critiche, manco a dirlo, sono bene accette (se costruttive), come pure eventuali richieste di chiarimento (a cui risponderò non appena possibile :)).

cdimauro
13-05-2009, 23:49
Segnalo un resoconto della seconda giornata della PyCon3 (http://www.appuntidigitali.it/3884/pycon3-resoconto-day2/), in cui si parla anche del mio talk.

E un mio articolo (http://www.appuntidigitali.it/3910/wpython-una-nuova-implementazione-per-python/) incentrato sul solo talk che ho tenuto.

Tommo
14-05-2009, 11:31
Ci capisco poco e niente di quello che hai scritto nell'articolo (che era decisamente interessante)...
cmq complimenti per l'idea e per il lavoro, sembra davvero un passo avanti anche "ad occhio" :D

Ma esistono altri linguaggi che usano le words per le istruzioni?

cdimauro
14-05-2009, 12:09
Può darsi, ma non ne ho la minima idea. :D

Comunque se dai un'occhiata alle slide dovresti capire meglio come funziona. ;)

Grazie comunque. :)

AnonimoVeneziano
14-05-2009, 12:25
Complimenti, ottimo lavoro :)

Ho leggiucchiato le slide e devo dire che hai avuto una gran bella idea :D
In media credo che una riduzione del numero di istruzioni per programma in un interprete identifichi un aumento prestazionale proprio per il fatto che bisogna stare meno nel ciclo di decoding delle istruzioni.
Ma l'aumento prestazionale in media quant'è? Ho visto dalle slide le percentuali su pybench e sembra una percentuale altissima :eek:

A quando l'introduzione nella mainline? :D

Ha qualche problema di compatibilità questo sistema o funziona bene con tutti i programmi python?

Ciao

~FullSyst3m~
14-05-2009, 12:31
Complimenti, ottimo lavoro :)

Ho leggiucchiato le slide e devo dire che hai avuto una gran bella idea :D
In media credo che una riduzione del numero di istruzioni per programma in un interprete identifichi un aumento prestazionale proprio per il fatto che bisogna stare meno nel ciclo di decoding delle istruzioni.
Ma l'aumento prestazionale in media quant'è? Ho visto dalle slide le percentuali su pybench e sembra una percentuale altissima :eek:

A quando l'introduzione nella mainline? :D

Ha qualche problema di compatibilità questo sistema o funziona bene con tutti i programmi python?

Ciao

Mi sembra abbia lavorato per la 2.6. Dovrebbe fare il backport per la 3.

cdimauro
14-05-2009, 12:33
Complimenti, ottimo lavoro :)

Ho leggiucchiato le slide e devo dire che hai avuto una gran bella idea :D
Grazie. :)
In media credo che una riduzione del numero di istruzioni per programma in un interprete identifichi un aumento prestazionale proprio per il fatto che bisogna stare meno nel ciclo di decoding delle istruzioni.
Esattamente. Questa era l'idea che mi trascinavo da tempo.
Ma l'aumento prestazionale in media quant'è? Ho visto dalle slide le percentuali su pybench e sembra una percentuale altissima :eek:
Ho messo soltanto i peggiori 10 e i migliori 10 risultati. Comunque il trend è del 20-25% circa di tempo in meno con PyBench.
A quando l'introduzione nella mainline? :D
Prima devo rimuovere degli hack, altrimenti gli sviluppatori ufficiali mi seviziano (Guido in primis). :asd:
Ha qualche problema di compatibilità questo sistema o funziona bene con tutti i programmi python?

Ciao
No, dovrebbe funzionare su tutto. A parte un paio di test su un caso molto particolare (le funzioni di tracing), l'intera batteria di test di Python viene eseguita con successo.

Diciamo che, risolto questo problemino (che riguarda più che altro i debugger, non le applicazioni comuni), dovrebbe essere pronta per andare in produzione a tutti gli effetti.

AnonimoVeneziano
14-05-2009, 12:33
Mi sembra abbia lavorato per la 2.6. Dovrebbe fare il backport per la 3.

più che il backport un frontport :p

cdimauro
14-05-2009, 12:34
Mi sembra abbia lavorato per la 2.6. Dovrebbe fare il backport per la 3.
Sì, chiaro.
più che il backport un frontport :p
In effetti... :D

AnonimoVeneziano
14-05-2009, 12:35
Diciamo che, risolto questo problemino (che riguarda più che altro i debugger, non le applicazioni comuni), dovrebbe essere pronta per andare in produzione a tutti gli effetti.

Ottimo, non vedo l'ora :D

cionci
14-05-2009, 12:36
Complimenti Cesare :mano:
Bel progetto, molto interessante, soprattutto l'ideaa di evitare i salti rendendo il formato dell'opcode fisso.

Se hai bisogno di qualche test su Linux a 64 bit (Core 2 Duo 2.16 Ghz) sono disponibile, però mi dovresti fornire anche la suite di test ;)

Tommo
14-05-2009, 12:46
Può darsi, ma non ne ho la minima idea. :D

Comunque se dai un'occhiata alle slide dovresti capire meglio come funziona. ;)

Grazie comunque. :)

Letto le slides, è molto più chiaro ora.
Cmq pensavo che i linguaggi in VM funzionassero GIA' in questa maniera, che senso ha costringersi ad usare i byte quando il computer stesso li digerisce peggio?

Cmq le istruzioni in wordcode sono di una complessità eccessiva, fortuna che le scrive il compiler :asd:

Un'idea: vista la quantità di istruzioni che si hanno ora a disposizione, potrebbe essere possibile profilare il codice e trovare le sequenze di istruzioni più comuni, quindi creare un singolo super-opcode che faccia esattamente la stessa operazione?:mc:

cdimauro
14-05-2009, 12:50
Complimenti Cesare :mano:
Bel progetto, molto interessante, soprattutto l'ideaa di evitare i salti rendendo il formato dell'opcode fisso.

Se hai bisogno di qualche test su Linux a 64 bit (Core 2 Duo 2.16 Ghz) sono disponibile, però mi dovresti fornire anche la suite di test ;)
Grazie. :)

Ti do delle indicazioni intanto su come compilarlo su Linux, visto che c'è un mio amico che ha avuto qualche problema.

Dopo averlo configurato (con ./configure immagino), copia il mio file Python_ast.h su quello che è stato generato automaticamente.

Per i test, in Tools/pybench c'è il file pybench.py. Basta eseguirlo nel seguente modo (supponendo che python si trovi nella root):

python Tools/pybench/pybench.py -f pybench_results.log

e postare i risultati (magari compressi in formato zip). Così posso confrontarli con quelli della versione base (che si trovano nel sito del progetto).

Per PyStone, invece, basta eseguire questo:

python Lib/test/pystone.py

Ma è meglio farlo per un certo numero di volte, scartare il primo risultato e fare la media degli altri. Questo perché è un po' "ballerino" come test (almeno nelle macchine in cui l'ho provato).

cionci
14-05-2009, 12:55
Letto le slides, è molto più chiaro ora.
Cmq pensavo che i linguaggi in VM funzionassero GIA' in questa maniera, che senso ha costringersi ad usare i byte quando il computer stesso li digerisce peggio?
In effetti...

Comunque le strade da percorrere ora potrebbero essere molteplici: gli opcode a 16 bit rendono secondo me il parsing un filo inefficiente. Forse la dimensione migliore sarebbe 32 bit, ma ovviamente si perderebbero i vantaggi nel risparmio di spazio. Però con l'idea di Tommo la cosa potrebbe divenire interessante, la fusione di una sequenza di istruzioni in un solo opcode a 32 bit farebbe risparmiare ancora spazio e renderebbe il tutto più veloce (ovviamente senza mescolare opcode a 16 e a 32 bit).

cdimauro
14-05-2009, 12:57
Letto le slides, è molto più chiaro ora.
Cmq pensavo che i linguaggi in VM funzionassero GIA' in questa maniera, che senso ha costringersi ad usare i byte quando il computer stesso li digerisce peggio?
Perché non è semplice altrimenti. Leggere singoli byte non ti crea problemi di endianess e di allineamento delle word, come ho scritto nell'apposita slide.

Con la mia soluzione ho dovuto prendere adeguate misure per garantire che il codice funzionasse sia su macchine little-endian che su macchine big-endian, e coi relativi problemi di allineamento (ad esempio su ARM non è possibile leggere word a indirizzi dispari).

Insomma, c'è da sbatterci un po' per avere una soluzione che sia compatta, performante, ma soprattutto... funzionante :D su modelli diversi dai bytecode.

Infine c'è da considerare anche l'architettura che si vuole creare, che in genere si pensa e realizza sulla base del linguaggio. Ad esempio la VM di Java è molto diversa da quella di .NET, ed entrambe le sono rispetto alla soluzione bytecode dell'attuale Python e della mia wordcode.
Cmq le istruzioni in wordcode sono di una complessità eccessiva, fortuna che le scrive il compiler :asd:
Veramente le ho scritte io. Una per una. :cry:
Un'idea: vista la quantità di istruzioni che si hanno ora a disposizione, potrebbe essere possibile profilare il codice e trovare le sequenze di istruzioni più comuni, quindi creare un singolo super-opcode che faccia esattamente la stessa operazione?:mc:
Già fatto. :D

Nel repository SVN in Tools trovi la cartella codebench che ho creato, in cui si trovano due applicazioni python da eseguire rigorosamente e rispettivamente per la versione bytecode e per quella wordcode.

Lanciate senza parametri compilano tutti i file .py che trovano nelle cartelle Lib e Tools, e riportano poi tutta una serie di statistiche.

E' così che ho trovato un bel po' di pattern a cui ho dedicato poi degli opportuni opcode.

Ce ne sarebbero altri, ma al momento ho altre cose da fare, per cui magari tornerò a metterci mano dopo che avrò stabilizzato il progetto. :)

cdimauro
14-05-2009, 13:00
In effetti...

Comunque le strade da percorrere ora potrebbero essere molteplici: i dati a 16 bit rendono secondo me il parsing un filo inefficiente. Forse la dimensione migliore sarebbe 32 bit, ma ovviamente si perderebbero i vantaggi nel risparmio di spazio.
Non solo: si aumenterebbe anche il consumo di bandwidth, e aumenterebbero le istruzioni necessarie per estrarre i dati che servono (opcode e relativi parametri), in particolare sulle architetture big-endian.
Però con l'idea di Tommo la cosa potrebbe divenire interessante, la fusione di una sequenza di istruzioni in un solo opcode a 32 bit farebbe risparmiare ancora spazio e renderebbe il tutto più veloce (ovviamente senza mescolare opcode a 16 e a 32 bit).
Lo faccio già. :D

Nella mia implementazione ho opcode a 16 e 32 bit, e alcune fanno un mare di lavoro (arrivo a eseguire gli stessi compiti di ben 4 istruzioni della vecchia implementazione).

Il modello che ho proposto non ha opcode di dimensione fissa: la dimensione è variabile, e attualmente posso avere istruzioni di 1, 2 o 3 word (quindi 2, 4 o 6 byte).

Un modello "CISC", appunto, che è il nome che ho dato a questa versione.

Altre VM, come quella di LUA ad esempio, utilizzano invece opcode a 32 bit di dimensione fissa.

~FullSyst3m~
14-05-2009, 13:02
C'è poco da dire. Gran bel lavoro davvero. Mi stupisce sempre di più vedere quante cose conosci. Complimenti.

Tommo
14-05-2009, 13:16
Capito...
cmq io intendevo "fortuna che all'utente finale le scrive il compiler"... lo so che al compiler le hai scritte te :asd:

La mia idea nasce proprio da questo punto: in pratica, creare un wordcode generator, che trova le sequenze più comuni in bytecode e genera le corrispondenti opcode, diverse per ogni programma.
Ovviamente il tutto non sarebbe solo a compile time, perchè una sequenza che compare una volta sola nel codice potrebbe essere ripetuta milioni di volte a runtime...

Quindi, dopo che lo fai girare un pò di tempo sulla tua applicazione, genera un wordcode "personale" che contiene words uniche per le parti critiche del tuo programma.
IMHO avrebbe senso, perchè ora che avete 32768 comandi disponibili è follia pensare di riempirli tutti a mano :D
Ovviamente, è solo un'idea random :asd:

cdimauro
14-05-2009, 13:22
Capito...
cmq io intendevo "fortuna che all'utente finale le scrive il compiler"... lo so che al compiler le hai scritte te :asd:
Sì, avevo capito, e ho fatto una battuta giusto per sdrammatizzare un po'. :D
La mia idea nasce proprio da questo punto: in pratica, creare un wordcode generator, che trova le sequenze più comuni in bytecode e genera le corrispondenti opcode, diverse per ogni programma.
Ovviamente il tutto non sarebbe solo a compile time, perchè una sequenza che compare una volta sola nel codice potrebbe essere ripetuta milioni di volte a runtime...

Quindi, dopo che lo fai girare un pò di tempo sulla tua applicazione, genera un wordcode "personale" che contiene words uniche per le parti critiche del tuo programma.
IMHO avrebbe senso, perchè ora che avete 32768 comandi disponibili è follia pensare di riempirli tutti a mano :D
Ovviamente, è solo un'idea random :asd:
Ho capito. Ci sono tre problemi con questa soluzione.

Il primo è che dipende tutto dal codice eseguito. Se n'è già discusso nella mailing list di Python, e purtroppo le prestazioni delle versioni "profile guided" dipendono appunto dal profilo scelto (es: template HTML, conversione dalla 2 alla 3, problema delle 8 regine, ecc. ecc.).

Il secondo è che gli opcode prodotti non sarebbero ottimizzati, perché non si può semplicemente prendere una sequenza di bytecode e tirare fuori una wordcode corrispondente. Le wordcode che ho creato arrivano da opportuni "tweak" che mi hanno permesso di compattare il più possibile le informazioni che mi interessavano in poco spazio (infatti al più utilizzo 2 word per le "macroistruzioni" più complesse).

Il terzo è che... la opcode table è rimasta di 256 elementi, e non 32768. :D Quindi c'è poco spazio, e infatti con le istruzioni che ho creato me ne sono mangiato già ben più della metà. :asd:

Tommo
14-05-2009, 13:28
Ok come non detto :D

Ma prima i 256 opcode con cosa erano riempiti allora?

javaboy
14-05-2009, 15:03
Complimentissimi!
E del progetto unladen-swallow basato su llvm che ne pensi?

cdimauro
14-05-2009, 15:38
Ok come non detto :D

Ma prima i 256 opcode con cosa erano riempiti allora?
Con altre istruzioni. C'erano parecchie istruzioni (una 90ina circa, se non ricordo male) NON dotate di parametro (che col mio modello è "obbligatorio", che ho raggruppato in soli 6 opcode, recuperando parecchi "slot" nella tabella.
Complimentissimi!
E del progetto unladen-swallow basato su llvm che ne pensi?
Ne ho parlato alla PyCon con uno degli sviluppatori, che teneva un talk (il giorno dopo il mio), e siamo rimasti anche in contatto via e-mail.

Sono molto interessati alle mie ottimizzazioni, perché non sono in conflitto con le loro e vogliono vedere per ognuna di essere quanto "rendono" per vedere cosa integrare e cosa no nel loro progetto.

~FullSyst3m~
14-05-2009, 18:38
Con altre istruzioni. C'erano parecchie istruzioni (una 90ina circa, se non ricordo male) NON dotate di parametro (che col mio modello è "obbligatorio", che ho raggruppato in soli 6 opcode, recuperando parecchi "slot" nella tabella.

Ne ho parlato alla PyCon con uno degli sviluppatori, che teneva un talk (il giorno dopo il mio), e siamo rimasti anche in contatto via e-mail.

Sono molto interessati alle mie ottimizzazioni, perché non sono in conflitto con le loro e vogliono vedere per ognuna di essere quanto "rendono" per vedere cosa integrare e cosa no nel loro progetto.

Hai fatto un figurone, deve essere una gran bella soddisfazione.

cdimauro
14-05-2009, 19:03
Ho anche rischiato parecchio.

Primo perché la settimana precedente, passando dalla modalità DEBUG a RELEASE non mi funzionava più una mazza, e sono impazzito a cercare il bug.

Secondo perché, non avendo mai tenuto talk, avrei potuto fare una misera figura sbagliando a parlare o bloccandomi.
Ho passato l'intera settimana a fare prove parlando da solo come uno scemo per cercare di "aggiustare" un po' il tiro.
Fortunatamente venerdì mattina ho fatto un pre-talk con gente esperta, e ho ricevuto anche delle preziose indicazioni.

Da soli, come al solito, non si va avanti.

~FullSyst3m~
14-05-2009, 19:08
Ho anche rischiato parecchio.

Primo perché la settimana precedente, passando dalla modalità DEBUG a RELEASE non mi funzionava più una mazza, e sono impazzito a cercare il bug.

Secondo perché, non avendo mai tenuto talk, avrei potuto fare una misera figura sbagliando a parlare o bloccandomi.
Ho passato l'intera settimana a fare prove parlando da solo come uno scemo per cercare di "aggiustare" un po' il tiro.
Fortunatamente venerdì mattina ho fatto un pre-talk con gente esperta, e ho ricevuto anche delle preziose indicazioni.

Da soli, come al solito, non si va avanti.

Il 99% è tutta farina del tuo sacco.

banryu79
15-05-2009, 09:04
Ho letto le slide... molto chiare.
Ho trovato tutta la faccenda molto interessante anche se, date le mie conoscenze degli argomenti trattati, ho capito solo parte del discorso.

Grazie per aver condiviso questo materiale.

cdimauro
16-05-2009, 10:45
Il 99% è tutta farina del tuo sacco.
Se qualcuno non avesse creato CPython, non avrei potuto fare niente.

Se il codice non fosse stato scritto decentemente, non c'avrei messo nemmeno mano.

Se CPython non fosse stato dotato di un'ottima batteria di test, anziché 3 mesi avrei potuto impiegare 3 anni (se andava bene).

Ripeto: da solo io non sarei andato da nessuna parte.

@banryu79: di nulla. Purtroppo è un argomento molto avanzato, e nel poco tempo a disposizione non ho potuto rendere le slide più dettagliate.

cionci
16-05-2009, 10:51
Opensource rules :O

Scusa Cesare, ma non ho avuto tempo di fare il test. Ti faccio sapere a inizio settimana ;)

cdimauro
16-05-2009, 11:35
Opensource rules :O
Una rondine non fa primavera. :fiufiu: :D
Scusa Cesare, ma non ho avuto tempo di fare il test. Ti faccio sapere a inizio settimana ;)
Non c'è problema. Anzi, grazie per l'interessamento. :)

DanieleC88
16-05-2009, 11:48
Interessano test anche su Linux/AMD64? :D

P.S.: bel lavoro, Cesare. ;)

cionci
16-05-2009, 11:54
Cesare mi sapresti indicare il sorgente da cui sei partito ? Ti chiedo questo perché sul mio sistema c'è Python 2.5. Così compilo entrambi e li metto ad armi pari ;)

cdimauro
16-05-2009, 12:01
Interessano test anche su Linux/AMD64? :D

P.S.: bel lavoro, Cesare. ;)
Grazie. Sì, i test sono i benvenuti. :)

Tra l'altro mi sembra che nessuno abbia mai provato finora a compilarlo a 64 bit e vedere se e come funziona.
Cesare mi sapresti indicare il sorgente da cui sei partito ? Ti chiedo questo perché sul mio sistema c'è Python 2.5. Così compilo entrambi e li metto ad armi pari ;)
La versione che ho usato è la 2.6.1 che trovi qui (http://www.python.org/download/releases/2.6.1/).

cionci
16-05-2009, 12:14
C'è un file Python-ast.h in Include che è già presente prima del configure. Devo copiare da una parte quello e poi copiarcelo nuovamente sopra dopo il configure ?

cionci
16-05-2009, 12:36
Intanto ti segnalo qualche problema di permessi. Bisogna aggiungere l'attributo +x a configure e a Parser/*.py ;)

cionci
16-05-2009, 12:56
Pybench con CPython originale compilato direttamente sulla mia macchina (Intel Core 2 Duo 2.16 Ghz) ;)
Aspetto istruzione su cosa fare di quel Python-ast.h di cui avevi parlato qualche post. Attualmente infatti il tuo si blocca durante la compilazione.
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.1 (r261:67515, May 16 2009, 12:41:27) [GCC 4.3.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 4.814 seconds.
* Round 2 done in 4.796 seconds.
* Round 3 done in 4.840 seconds.
* Round 4 done in 4.883 seconds.
* Round 5 done in 4.840 seconds.
* Round 6 done in 4.912 seconds.
* Round 7 done in 4.896 seconds.
* Round 8 done in 4.875 seconds.
* Round 9 done in 4.846 seconds.
* Round 10 done in 4.849 seconds.

-------------------------------------------------------------------------------
Benchmark: 2009-05-16 12:50:17
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.27-14-generic-x86_64-with-debian-lenny-sid
Processor:

Python:
Implementation: CPython
Executable: /home/cionci/Python-2.6.1/python
Version: 2.6.1
Compiler: GCC 4.3.2
Bits: 64bit
Build: May 16 2009 12:41:27 (#r261:67515)
Unicode: UCS2


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 88ms 88ms 0.17us 0.184ms
BuiltinMethodLookup: 71ms 71ms 0.07us 0.214ms
CompareFloats: 76ms 77ms 0.06us 0.246ms
CompareFloatsIntegers: 75ms 75ms 0.08us 0.195ms
CompareIntegers: 91ms 91ms 0.05us 0.365ms
CompareInternedStrings: 108ms 108ms 0.07us 0.900ms
CompareLongs: 76ms 76ms 0.07us 0.214ms
CompareStrings: 120ms 120ms 0.12us 0.610ms
CompareUnicode: 82ms 85ms 0.11us 0.470ms
ComplexPythonFunctionCalls: 94ms 95ms 0.48us 0.308ms
ConcatStrings: 105ms 125ms 0.25us 0.364ms
ConcatUnicode: 85ms 102ms 0.34us 0.248ms
CreateInstances: 95ms 96ms 0.86us 0.249ms
CreateNewInstances: 69ms 70ms 0.83us 0.243ms
CreateStringsWithConcat: 95ms 96ms 0.10us 0.628ms
CreateUnicodeWithConcat: 65ms 66ms 0.17us 0.244ms
DictCreation: 68ms 70ms 0.17us 0.246ms
DictWithFloatKeys: 82ms 85ms 0.09us 0.460ms
DictWithIntegerKeys: 77ms 77ms 0.06us 0.613ms
DictWithStringKeys: 74ms 80ms 0.07us 0.608ms
ForLoops: 64ms 64ms 2.55us 0.042ms
IfThenElse: 93ms 94ms 0.07us 0.435ms
ListSlicing: 76ms 76ms 5.44us 0.064ms
NestedForLoops: 84ms 86ms 0.06us 0.015ms
NormalClassAttribute: 81ms 81ms 0.07us 0.291ms
NormalInstanceAttribute: 76ms 77ms 0.06us 0.291ms
PythonFunctionCalls: 91ms 92ms 0.28us 0.174ms
PythonMethodCalls: 103ms 104ms 0.46us 0.090ms
Recursion: 116ms 117ms 2.34us 0.295ms
SecondImport: 74ms 74ms 0.74us 0.116ms
SecondPackageImport: 80ms 81ms 0.81us 0.116ms
SecondSubmoduleImport: 103ms 104ms 1.04us 0.117ms
SimpleComplexArithmetic: 84ms 85ms 0.10us 0.235ms
SimpleDictManipulation: 82ms 83ms 0.07us 0.356ms
SimpleFloatArithmetic: 82ms 82ms 0.06us 0.349ms
SimpleIntFloatArithmetic: 72ms 72ms 0.05us 0.349ms
SimpleIntegerArithmetic: 73ms 73ms 0.06us 0.350ms
SimpleListManipulation: 70ms 70ms 0.06us 0.378ms
SimpleLongArithmetic: 84ms 84ms 0.13us 0.174ms
SmallLists: 76ms 78ms 0.11us 0.233ms
SmallTuples: 84ms 86ms 0.16us 0.262ms
SpecialClassAttribute: 79ms 80ms 0.07us 0.292ms
SpecialInstanceAttribute: 158ms 159ms 0.13us 0.296ms
StringMappings: 73ms 74ms 0.29us 0.283ms
StringPredicates: 84ms 84ms 0.12us 1.682ms
StringSlicing: 75ms 84ms 0.15us 0.498ms
TryExcept: 73ms 73ms 0.03us 0.435ms
TryFinally: 76ms 76ms 0.48us 0.232ms
TryRaiseExcept: 81ms 82ms 1.28us 0.232ms
TupleSlicing: 87ms 89ms 0.34us 0.046ms
UnicodeMappings: 92ms 92ms 2.57us 0.344ms
UnicodePredicates: 80ms 80ms 0.15us 2.044ms
UnicodeProperties: 89ms 89ms 0.22us 1.631ms
UnicodeSlicing: 85ms 93ms 0.19us 0.440ms
WithFinally: 100ms 100ms 0.63us 0.232ms
WithRaiseExcept: 83ms 84ms 1.05us 0.291ms
-------------------------------------------------------------------------------
Totals: 4755ms 4855ms

~FullSyst3m~
16-05-2009, 13:02
Disponibile anche io a fare test su linux. Architettura processore e sistema operativo 64bit.
Al momento ho installato CPython 2.6.2.

VICIUS
16-05-2009, 13:39
Ho fatto qualche prova veloce su leopard. Non ho capito bene dove scaricare il file Python-ast.h quindi ho lasciato quello che era già presente in Include. I sorgenti compilano quindi immagino di aver fatto tutto bene. Queste sono le medie di pybench sul mio imac. (lo so non è la stessa versione...)

Python 2.5.1: 6433ms
wPython 2.6.1: 5342ms

cionci
16-05-2009, 13:43
A me non compila...spero sia la storia di Python-ast.h...boh...
Ecco l'errore:
Python/ast.c:30: warning: ‘enum _expr_const’ declared inside parameter list
Python/ast.c:30: warning: its scope is only this definition or declaration, which is probably not what you want
Python/ast.c:335: warning: ‘enum _expr_const’ declared inside parameter list
Python/ast.c:335: error: parameter 2 (‘constant’) has incomplete type

Più un'altra sfilza di errori...

VICIUS
16-05-2009, 13:49
Gcc col passare delle versioni diventa sempre più pignolo. Prova ad usare una versione più vecchia magari funziona. Ti allego anche il file .h che ho usato io.

cionci
16-05-2009, 13:52
La versione originale 2.6.1 me l'ha compilata senza problemi ;)
In ogni caso quell'enum sembra essere definito proprio in Python-ast.h :)
Vedo un po'...

cionci
16-05-2009, 14:16
No, mi sono sbagliato non è definito lì...è definito in quello di VICIUS però...ci ho copiato quello sopra. Vediamo...

cionci
16-05-2009, 14:25
Così compila !!!
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.1 (r261:2M, May 16 2009, 14:17:53) [GCC 4.3.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 4.193 seconds.
* Round 2 done in 4.189 seconds.
* Round 3 done in 4.225 seconds.
* Round 4 done in 4.208 seconds.
* Round 5 done in 4.224 seconds.
* Round 6 done in 4.199 seconds.
* Round 7 done in 4.200 seconds.
* Round 8 done in 4.201 seconds.
* Round 9 done in 4.214 seconds.
* Round 10 done in 4.217 seconds.

-------------------------------------------------------------------------------
Benchmark: 2009-05-16 14:19:59
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.27-14-generic-x86_64-with-debian-lenny-sid
Processor:

Python:
Implementation: CPython
Executable: /home/cionci/wpython-read-only/python
Version: 2.6.1
Compiler: GCC 4.3.2
Bits: 64bit
Build: May 16 2009 14:17:53 (#r261:2M)
Unicode: UCS2


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 80ms 81ms 0.16us 0.173ms
BuiltinMethodLookup: 68ms 69ms 0.07us 0.197ms
CompareFloats: 72ms 73ms 0.06us 0.233ms
CompareFloatsIntegers: 74ms 74ms 0.08us 0.177ms
CompareIntegers: 69ms 69ms 0.04us 0.345ms
CompareInternedStrings: 72ms 73ms 0.05us 0.854ms
CompareLongs: 66ms 66ms 0.06us 0.200ms
CompareStrings: 92ms 93ms 0.09us 0.568ms
CompareUnicode: 67ms 68ms 0.09us 0.428ms
ComplexPythonFunctionCalls: 84ms 88ms 0.44us 0.281ms
ConcatStrings: 94ms 102ms 0.20us 0.344ms
ConcatUnicode: 77ms 83ms 0.28us 0.234ms
CreateInstances: 86ms 88ms 0.78us 0.232ms
CreateNewInstances: 61ms 63ms 0.75us 0.231ms
CreateStringsWithConcat: 99ms 100ms 0.10us 0.562ms
CreateUnicodeWithConcat: 57ms 59ms 0.15us 0.227ms
DictCreation: 44ms 46ms 0.12us 0.225ms
DictWithFloatKeys: 74ms 75ms 0.08us 0.422ms
DictWithIntegerKeys: 69ms 72ms 0.06us 0.569ms
DictWithStringKeys: 61ms 63ms 0.05us 0.562ms
ForLoops: 74ms 76ms 3.04us 0.042ms
IfThenElse: 54ms 55ms 0.04us 0.454ms
ListSlicing: 75ms 76ms 5.43us 0.082ms
NestedForLoops: 68ms 69ms 0.05us 0.016ms
NormalClassAttribute: 56ms 57ms 0.05us 0.287ms
NormalInstanceAttribute: 53ms 54ms 0.04us 0.298ms
PythonFunctionCalls: 84ms 85ms 0.26us 0.169ms
PythonMethodCalls: 91ms 91ms 0.41us 0.089ms
Recursion: 105ms 106ms 2.11us 0.280ms
SecondImport: 70ms 71ms 0.71us 0.112ms
SecondPackageImport: 76ms 77ms 0.77us 0.112ms
SecondSubmoduleImport: 97ms 98ms 0.98us 0.115ms
SimpleComplexArithmetic: 65ms 65ms 0.07us 0.229ms
SimpleDictManipulation: 80ms 81ms 0.07us 0.338ms
SimpleFloatArithmetic: 52ms 53ms 0.04us 0.343ms
SimpleIntFloatArithmetic: 47ms 47ms 0.04us 0.348ms
SimpleIntegerArithmetic: 47ms 47ms 0.04us 0.336ms
SimpleListManipulation: 60ms 60ms 0.05us 0.364ms
SimpleLongArithmetic: 64ms 64ms 0.10us 0.168ms
SmallLists: 71ms 73ms 0.11us 0.229ms
SmallTuples: 74ms 75ms 0.14us 0.259ms
SpecialClassAttribute: 58ms 58ms 0.05us 0.281ms
SpecialInstanceAttribute: 136ms 137ms 0.11us 0.288ms
StringMappings: 70ms 71ms 0.28us 0.273ms
StringPredicates: 68ms 68ms 0.10us 1.308ms
StringSlicing: 73ms 81ms 0.15us 0.488ms
TryExcept: 68ms 68ms 0.03us 0.431ms
TryFinally: 69ms 69ms 0.43us 0.234ms
TryRaiseExcept: 76ms 77ms 1.20us 0.231ms
TupleSlicing: 81ms 84ms 0.32us 0.053ms
UnicodeMappings: 91ms 91ms 2.54us 0.358ms
UnicodePredicates: 66ms 66ms 0.12us 1.580ms
UnicodeProperties: 79ms 83ms 0.21us 1.314ms
UnicodeSlicing: 78ms 81ms 0.16us 0.423ms
WithFinally: 102ms 104ms 0.65us 0.226ms
WithRaiseExcept: 84ms 85ms 1.06us 0.278ms
-------------------------------------------------------------------------------
Totals: 4132ms 4207ms

Un 15% netto in più di prestazioni, non è per niente male ;)

~FullSyst3m~
16-05-2009, 15:33
Vorrei contribuire pure io. Che devo fare? Non ho seguito i precedenti post...

cdimauro
16-05-2009, 16:00
C'è un file Python-ast.h in Include che è già presente prima del configure. Devo copiare da una parte quello e poi copiarcelo nuovamente sopra dopo il configure ?
Sì, esatto. Purtroppo con la compilazione sotto Linux non so perché, ma viene rigenerato. Con Windows invece lo conserva tale e quale.
Intanto ti segnalo qualche problema di permessi. Bisogna aggiungere l'attributo +x a configure e a Parser/*.py ;)
Strano, perché configure non l'ho toccato manco di striscio. :stordita:

Gli altri file .py sì, ma con Windows non ho cognizione del cambio di attributi (non li vedo da filesystem: dovrei andare a sbirciare nelle ACL).
Disponibile anche io a fare test su linux. Architettura processore e sistema operativo 64bit.
Al momento ho installato CPython 2.6.2.
Devi provare la 2.6.1 di cui ho postato il link prima, altrimenti si falserebbero i benchmark (anche se le modifiche rispetto alla 2.6.2 sono poche: più che altro bug fix).
Ho fatto qualche prova veloce su leopard. Non ho capito bene dove scaricare il file Python-ast.h quindi ho lasciato quello che era già presente in Include. I sorgenti compilano quindi immagino di aver fatto tutto bene. Queste sono le medie di pybench sul mio imac. (lo so non è la stessa versione...)

Python 2.5.1: 6433ms
wPython 2.6.1: 5342ms
Fatto bene, però il confronto con la 2.5.1 non vale. :fagiano:
Gcc col passare delle versioni diventa sempre più pignolo. Prova ad usare una versione più vecchia magari funziona. Ti allego anche il file .h che ho usato io.
E' quello mio. :D
La versione originale 2.6.1 me l'ha compilata senza problemi ;)
In ogni caso quell'enum sembra essere definito proprio in Python-ast.h :)
Vedo un po'...
Sì, è sicuramente colpa di quel file, perché si porta dietro delle modifiche che mi sono state necessarie per poter aggiungere il mio codice di constant folding.

E' un file che dovrebbe essere generato una sola volta, e mai più toccato. Ma non so perché, con Linux viene rigenerato la prima volta che si prova a compilare.
Così compila !!!
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.1 (r261:2M, May 16 2009, 14:17:53) [GCC 4.3.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 4.193 seconds.
* Round 2 done in 4.189 seconds.
* Round 3 done in 4.225 seconds.
* Round 4 done in 4.208 seconds.
* Round 5 done in 4.224 seconds.
* Round 6 done in 4.199 seconds.
* Round 7 done in 4.200 seconds.
* Round 8 done in 4.201 seconds.
* Round 9 done in 4.214 seconds.
* Round 10 done in 4.217 seconds.

-------------------------------------------------------------------------------
Benchmark: 2009-05-16 14:19:59
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.27-14-generic-x86_64-with-debian-lenny-sid
Processor:

Python:
Implementation: CPython
Executable: /home/cionci/wpython-read-only/python
Version: 2.6.1
Compiler: GCC 4.3.2
Bits: 64bit
Build: May 16 2009 14:17:53 (#r261:2M)
Unicode: UCS2


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 80ms 81ms 0.16us 0.173ms
BuiltinMethodLookup: 68ms 69ms 0.07us 0.197ms
CompareFloats: 72ms 73ms 0.06us 0.233ms
CompareFloatsIntegers: 74ms 74ms 0.08us 0.177ms
CompareIntegers: 69ms 69ms 0.04us 0.345ms
CompareInternedStrings: 72ms 73ms 0.05us 0.854ms
CompareLongs: 66ms 66ms 0.06us 0.200ms
CompareStrings: 92ms 93ms 0.09us 0.568ms
CompareUnicode: 67ms 68ms 0.09us 0.428ms
ComplexPythonFunctionCalls: 84ms 88ms 0.44us 0.281ms
ConcatStrings: 94ms 102ms 0.20us 0.344ms
ConcatUnicode: 77ms 83ms 0.28us 0.234ms
CreateInstances: 86ms 88ms 0.78us 0.232ms
CreateNewInstances: 61ms 63ms 0.75us 0.231ms
CreateStringsWithConcat: 99ms 100ms 0.10us 0.562ms
CreateUnicodeWithConcat: 57ms 59ms 0.15us 0.227ms
DictCreation: 44ms 46ms 0.12us 0.225ms
DictWithFloatKeys: 74ms 75ms 0.08us 0.422ms
DictWithIntegerKeys: 69ms 72ms 0.06us 0.569ms
DictWithStringKeys: 61ms 63ms 0.05us 0.562ms
ForLoops: 74ms 76ms 3.04us 0.042ms
IfThenElse: 54ms 55ms 0.04us 0.454ms
ListSlicing: 75ms 76ms 5.43us 0.082ms
NestedForLoops: 68ms 69ms 0.05us 0.016ms
NormalClassAttribute: 56ms 57ms 0.05us 0.287ms
NormalInstanceAttribute: 53ms 54ms 0.04us 0.298ms
PythonFunctionCalls: 84ms 85ms 0.26us 0.169ms
PythonMethodCalls: 91ms 91ms 0.41us 0.089ms
Recursion: 105ms 106ms 2.11us 0.280ms
SecondImport: 70ms 71ms 0.71us 0.112ms
SecondPackageImport: 76ms 77ms 0.77us 0.112ms
SecondSubmoduleImport: 97ms 98ms 0.98us 0.115ms
SimpleComplexArithmetic: 65ms 65ms 0.07us 0.229ms
SimpleDictManipulation: 80ms 81ms 0.07us 0.338ms
SimpleFloatArithmetic: 52ms 53ms 0.04us 0.343ms
SimpleIntFloatArithmetic: 47ms 47ms 0.04us 0.348ms
SimpleIntegerArithmetic: 47ms 47ms 0.04us 0.336ms
SimpleListManipulation: 60ms 60ms 0.05us 0.364ms
SimpleLongArithmetic: 64ms 64ms 0.10us 0.168ms
SmallLists: 71ms 73ms 0.11us 0.229ms
SmallTuples: 74ms 75ms 0.14us 0.259ms
SpecialClassAttribute: 58ms 58ms 0.05us 0.281ms
SpecialInstanceAttribute: 136ms 137ms 0.11us 0.288ms
StringMappings: 70ms 71ms 0.28us 0.273ms
StringPredicates: 68ms 68ms 0.10us 1.308ms
StringSlicing: 73ms 81ms 0.15us 0.488ms
TryExcept: 68ms 68ms 0.03us 0.431ms
TryFinally: 69ms 69ms 0.43us 0.234ms
TryRaiseExcept: 76ms 77ms 1.20us 0.231ms
TupleSlicing: 81ms 84ms 0.32us 0.053ms
UnicodeMappings: 91ms 91ms 2.54us 0.358ms
UnicodePredicates: 66ms 66ms 0.12us 1.580ms
UnicodeProperties: 79ms 83ms 0.21us 1.314ms
UnicodeSlicing: 78ms 81ms 0.16us 0.423ms
WithFinally: 102ms 104ms 0.65us 0.226ms
WithRaiseExcept: 84ms 85ms 1.06us 0.278ms
-------------------------------------------------------------------------------
Totals: 4132ms 4207ms

Un 15% netto in più di prestazioni, non è per niente male ;)
:eek: Per una macchina moderna, direi di sì. Puoi postare la configurazione del tuo sistema (CPU, chipset, memoria)?
Vorrei contribuire pure io. Che devo fare? Non ho seguito i precedenti post...
Scaricati la 2.6.1 come ti ho detto, e prova a compilare quella.

Poi scaricati la mia versione, metti da parte il file Include/Python_ast.h e prova a compilare. Quando ti dà errore, ricopia il suddetto file in Include, e compila.

Una volta compilati entrambi, puoi effettuare dei test.

Basta scrivere:

python Tools/pybench/pybench.py

(da dentro la cartella di Python) e parte una suite di test molto usata.

Ricordati di non avere nessun programma che gira, oltre a questo, per non falsare i benchmark.

Volendo c'è anche un altro benchmark, che si trova in Lib/test/PyStone.py

Questo, però, è un po' "ballerino". Io l'ho lanciato 6 volte di seguito per ogni versione di Python, ho eliminato il primo risultato e poi fatto la media dei rimanenti 5.

In ogni caso, grazie a tutti per test!!! :)

VICIUS
16-05-2009, 16:00
Vorrei contribuire pure io. Che devo fare? Non ho seguito i precedenti post...

Scarica i sorgenti dal server di google code. Sistema i permessi come ha spiegato cionci e lancia il configure. Sostituisci il file Python-ath.h con quello che ho allegato io e compila. Pybench sta nella sotto cartella Tools.

VICIUS
16-05-2009, 16:04
Fatto bene, però il confronto con la 2.5.1 non vale. :fagiano:

Ora compilo che tanto questo pomeriggio non ho niente di meglio da fare. :)

cionci
16-05-2009, 16:09
Strano, perché configure non l'ho toccato manco di striscio. :stordita:
Colpa di Windows, sicuramente. Non so se tu li possa impostare da SVN i permessi.

Configurazione:


Intel Core 2 Duo E6400 2.166 Ghz
Chipset Intel P965
2 GB di Ram DDR2 800 Mhz
Ubuntu Intrepid Ibex 64 bit
Sia Python 2.6.1 che il tuo sono stati compilati da sorgente.
In entrambi i casi ho chiuso tutte le applicazioni attive, tranne i servizi e l'ambiente grafico.

VICIUS
16-05-2009, 16:15
Ok. Python 2.6.1 liscio fa 6080 ms quindi un buon 12% in più della tua versione che ferma l'orologio a 5342 ms.

cionci
16-05-2009, 16:18
C'è qualche applicazione di data crunching da provare ? Sarebbe interessante provare la differenza nel mondo reale.

cdimauro
16-05-2009, 16:25
Colpa di Windows, sicuramente. Non so se tu li possa impostare da SVN i permessi.
Windows è la causa di tutti i mali. :asd:

A parte gli scherzi, ci sbatterò un po' la testa perché anche a lavoro ho qualche problema coi permessi (in particolare coi .sh).
Configurazione:

Intel Core 2 Duo E6400 2.166 Ghz
Chipset Intel P965
2 GB di Ram DDR2 800 Mhz
Ubuntu Intrepid Ibex 64 bit
Sia Python 2.6.1 che il tuo sono stati compilati da sorgente.
In entrambi i casi ho chiuso tutte le applicazioni attive, tranne i servizi e l'ambiente grafico.
Perfetto. Grazie.
Ok. Python 2.6.1 liscio fa 6080 ms quindi un buon 12% in più della tua versione che ferma l'orologio a 5342 ms.
Ottimo. Ma qual è la tua macchina?
C'è qualche applicazione di data crunching da provare ? Sarebbe interessante provare la differenza nel mondo reale.
Certo. Io con Windows non li ho potuti provare, perché purtroppo la suite di benchmark "seria" che viene ormai usata non ci gira (causa dipendenze da librerie presenti esclusivamente su piattaform Unix), ma ci sono i test del progetto lanciato da Google: http://code.google.com/p/unladen-swallow/wiki/Benchmarks

Bisogna scaricare i file presenti nella cartella tests come indicato nella pagina, e poi lanciare il file principale specificando dove trovare la versione di python "ufficiale" e quella "sperimentale" da confrontare.

VICIUS
16-05-2009, 16:31
Ottimo. Ma qual è la tua macchina?
Core 2 Duo (T7700) 2.4 GHz e 4GB DDR2 a 667 MHz

cdimauro
16-05-2009, 17:24
OK, grazie. :)

~FullSyst3m~
16-05-2009, 17:37
Gli altri file .py sì, ma con Windows non ho cognizione del cambio di attributi (non li vedo da filesystem: dovrei andare a sbirciare nelle ACL


ACL?

Scaricati la 2.6.1 come ti ho detto, e prova a compilare quella.


Scaricata e compilata con ./configure, make e make install. Tutto andato a buon fine, ma quando apro l'interprete mi dà sempre la 2.6.2. Inoltre non capisco a cosa serve il setup.py nel sorgente?

oi scaricati la mia versione, metti da parte il file Include/Python_ast.h e prova a compilare. Quando ti dà errore, ricopia il suddetto file in Include, e compila.


Ok.

Una volta compilati entrambi, puoi effettuare dei test.

Basta scrivere:

python Tools/pybench/pybench.py

(da dentro la cartella di Python) e parte una suite di test molto usata.

Da dentro la cartella di Python quale? I sorgenti o quella installata?

~FullSyst3m~
16-05-2009, 17:54
Il ./configure mi va a buon fine, il make no. Ho fatto la procedura che hai detto, ma niente.

cdimauro
16-05-2009, 17:54
ACL?
http://it.wikipedia.org/wiki/Lista_di_controllo_degli_accessi
Scaricata e compilata con ./configure, make e make install. Tutto andato a buon fine, ma quando apro l'interprete mi dà sempre la 2.6.2.
Vuol dire che ti va a prendere sempre l'interprete che hai installato nella tua macchina.

In questo caso devi andare tu a selezionare quello che t'interessa usare, specificandone il path completo.
Inoltre non capisco a cosa serve il setup.py nel sorgente?
Dove si trova esattamente?
Da dentro la cartella di Python quale? I sorgenti o quella installata?
Non c'è nulla da installare. La compilazione genera un file python e relative librerie, ma non installa niente. Tu devi indicare il path di questo file, e sei a posto.
Il ./configure mi va a buon fine, il make no. Ho fatto la procedura che hai detto, ma niente.
Riporta l'errore che ti dà.

~FullSyst3m~
16-05-2009, 18:04
Vuol dire che ti va a prendere sempre l'interprete che hai installato nella tua macchina.

In questo caso devi andare tu a selezionare quello che t'interessa usare, specificandone il path completo.

Si infatti, avevo pensato pure io questo, ma bisogna vedere dove ha messo la 2.6.1.

Dove si trova esattamente?


Nella root.

Non c'è nulla da installare. La compilazione genera un file python e relative librerie, ma non installa niente. Tu devi indicare il path di questo file, e sei a posto.

Genera un solo file Python? Pensavo che dopo la compilazione lo installasse direttamente nel sistema.

Riporta l'errore che ti dà.

Ora riprovo a fare la procedura e casomai riporto l'errore.

cionci
16-05-2009, 18:11
Genera un solo file Python? Pensavo che dopo la compilazione lo installasse direttamente nel sistema.
Certo che l'hai installato, hai dato make install, ma non credi che sarebbe meglio aspettare ad utilizzarlo come interprete python principale ? Tra l'altro non lo puoi nemmeno rimuovere ora.

~FullSyst3m~
16-05-2009, 18:17
Certo che l'hai installato, hai dato make install, ma non credi che sarebbe meglio aspettare ad utilizzarlo come interprete python principale ? Tra l'altro non lo puoi nemmeno rimuovere ora.

Scusa, di quale stai parlando? 2.6.1 ufficiale o quella di cdimauro? Io non avevo proprio intenzione di utilizzarlo come interprete principale in caso, ho già la 2.6.2.

cionci
16-05-2009, 18:26
Scusa, di quale stai parlando? 2.6.1 ufficiale o quella di cdimauro? Io non avevo proprio intenzione di utilizzarlo come interprete principale in caso, ho già la 2.6.2.
Dando il comando make install l'hai praticamente fatto. Dovevi dare solo make.

~FullSyst3m~
16-05-2009, 18:30
Dando il comando make install l'hai praticamente fatto. Dovevi dare solo make.

Non lo sapevo, ho sempre eseguito questa procedura la maggior parte delle volte e credevo che servisse per completare la compilazione. In pratica mi bastava dare il ./configure e il make soltanto a quanto ho capito.

Perchè non lo posso rimuovere ora?

cionci
16-05-2009, 18:33
Perchè non lo posso rimuovere ora?
Perché te l'ha copiato nelle directory di sistema. Prima di tutto non so dove te l'ha copiato, potrebbe averti anche sovrascritto l'interprete precedente.
Imho il modo migliore è reinstallare i pacchetti di Python 2.6.2.

ndakota
16-05-2009, 19:08
male che vada sarai il tester ufficiale di cdimauro :Prrr:

~FullSyst3m~
16-05-2009, 19:57
Perché te l'ha copiato nelle directory di sistema. Prima di tutto non so dove te l'ha copiato, potrebbe averti anche sovrascritto l'interprete precedente.
Imho il modo migliore è reinstallare i pacchetti di Python 2.6.2.

L'interprete è ok, indagherò.

male che vada sarai il tester ufficiale di cdimauro

Mi farebbe tanto piacere :)

VICIUS
16-05-2009, 20:42
Perché te l'ha copiato nelle directory di sistema. Prima di tutto non so dove te l'ha copiato, potrebbe averti anche sovrascritto l'interprete precedente.
Imho il modo migliore è reinstallare i pacchetti di Python 2.6.2.

Configure di solito usa come prefisso /usr/local se non gli si dice niente quindi ora dovrebbe avere sia la 2.6.2 standard che la versione di Cesare. Il binario della prima dovrebbe essere in /usr/bin/python mentre quello che ha appena compilato si trova quasi certamente in /usr/local/bin/python.

~FullSyst3m~
17-05-2009, 18:09
Configure di solito usa come prefisso /usr/local se non gli si dice niente quindi ora dovrebbe avere sia la 2.6.2 standard che la versione di Cesare. Il binario della prima dovrebbe essere in /usr/bin/python mentre quello che ha appena compilato si trova quasi certamente in /usr/local/bin/python.

Ancora non ho potuto indagare, sono fuori casa. Proverò quando ho tempo.

~FullSyst3m~
18-05-2009, 01:02
Allora, ho preso i sorgenti della 2.6.1, li ho compilati (senza installarli) e ho lanciato pybench dalla cartella dei sorgenti, solo che il test me lo fa con la 2.6.2 che ho installata di default nel sistema. Questi sono i risultati:

PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.2 (release26-maint, Apr 19 2009, 01:58:18) [GCC 4.3.3]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 3.638 seconds.
* Round 2 done in 3.564 seconds.
* Round 3 done in 3.597 seconds.
* Round 4 done in 3.636 seconds.
* Round 5 done in 3.620 seconds.
* Round 6 done in 3.661 seconds.
* Round 7 done in 3.625 seconds.
* Round 8 done in 3.611 seconds.
* Round 9 done in 3.624 seconds.
* Round 10 done in 3.604 seconds.

-------------------------------------------------------------------------------
Benchmark: 2009-05-18 00:53:43
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.28-11-generic-x86_64-with-Ubuntu-9.04-jaunty
Processor:

Python:
Implementation: CPython
Executable: /usr/bin/python
Version: 2.6.2
Compiler: GCC 4.3.3
Bits: 64bit
Build: Apr 19 2009 01:58:18 (#release26-maint)
Unicode: UCS4


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 66ms 67ms 0.13us 0.125ms
BuiltinMethodLookup: 53ms 53ms 0.05us 0.146ms
CompareFloats: 78ms 78ms 0.07us 0.169ms
CompareFloatsIntegers: 70ms 71ms 0.08us 0.125ms
CompareIntegers: 81ms 82ms 0.05us 0.270ms
CompareInternedStrings: 79ms 79ms 0.05us 0.631ms
CompareLongs: 60ms 60ms 0.06us 0.146ms
CompareStrings: 89ms 89ms 0.09us 0.424ms
CompareUnicode: 61ms 61ms 0.08us 0.321ms
ComplexPythonFunctionCalls: 69ms 70ms 0.35us 0.209ms
ConcatStrings: 71ms 105ms 0.21us 0.253ms
ConcatUnicode: 95ms 99ms 0.33us 0.172ms
CreateInstances: 71ms 73ms 0.65us 0.170ms
CreateNewInstances: 54ms 54ms 0.65us 0.171ms
CreateStringsWithConcat: 67ms 68ms 0.07us 0.418ms
CreateUnicodeWithConcat: 59ms 61ms 0.15us 0.166ms
DictCreation: 48ms 51ms 0.13us 0.167ms
DictWithFloatKeys: 64ms 64ms 0.07us 0.317ms
DictWithIntegerKeys: 55ms 56ms 0.05us 0.424ms
DictWithStringKeys: 49ms 50ms 0.04us 0.423ms
ForLoops: 46ms 46ms 1.85us 0.030ms
IfThenElse: 60ms 60ms 0.04us 0.319ms
ListSlicing: 56ms 56ms 4.01us 0.049ms
NestedForLoops: 57ms 58ms 0.04us 0.011ms
NormalClassAttribute: 56ms 57ms 0.05us 0.210ms
NormalInstanceAttribute: 54ms 56ms 0.05us 0.210ms
PythonFunctionCalls: 64ms 65ms 0.20us 0.126ms
PythonMethodCalls: 80ms 82ms 0.37us 0.064ms
Recursion: 85ms 86ms 1.71us 0.216ms
SecondImport: 51ms 52ms 0.52us 0.083ms
SecondPackageImport: 57ms 57ms 0.57us 0.083ms
SecondSubmoduleImport: 74ms 74ms 0.74us 0.083ms
SimpleComplexArithmetic: 65ms 65ms 0.07us 0.167ms
SimpleDictManipulation: 63ms 64ms 0.05us 0.209ms
SimpleFloatArithmetic: 63ms 64ms 0.05us 0.253ms
SimpleIntFloatArithmetic: 50ms 50ms 0.04us 0.250ms
SimpleIntegerArithmetic: 49ms 50ms 0.04us 0.250ms
SimpleListManipulation: 47ms 47ms 0.04us 0.271ms
SimpleLongArithmetic: 62ms 63ms 0.10us 0.127ms
SmallLists: 53ms 54ms 0.08us 0.169ms
SmallTuples: 59ms 59ms 0.11us 0.190ms
SpecialClassAttribute: 55ms 56ms 0.05us 0.212ms
SpecialInstanceAttribute: 115ms 116ms 0.10us 0.211ms
StringMappings: 53ms 53ms 0.21us 0.201ms
StringPredicates: 61ms 62ms 0.09us 1.150ms
StringSlicing: 54ms 59ms 0.11us 0.357ms
TryExcept: 49ms 50ms 0.02us 0.313ms
TryFinally: 53ms 54ms 0.34us 0.166ms
TryRaiseExcept: 55ms 56ms 0.87us 0.167ms
TupleSlicing: 62ms 66ms 0.25us 0.033ms
UnicodeMappings: 73ms 73ms 2.04us 0.236ms
UnicodePredicates: 56ms 57ms 0.11us 1.383ms
UnicodeProperties: 64ms 66ms 0.16us 1.163ms
UnicodeSlicing: 60ms 63ms 0.13us 0.311ms
WithFinally: 71ms 72ms 0.45us 0.167ms
WithRaiseExcept: 59ms 60ms 0.75us 0.212ms
-------------------------------------------------------------------------------
Totals: 3532ms 3618ms


La versione di Cesare invece non riesco a compilarla. Metto da parte il Python_ast.h, compilo, mi dà errore, copio il file in Include e ottengo lo stesso errore che otteneva cionci.

VICIUS
18-05-2009, 01:07
Come lanci il benchmark? Ricorda di usare il percorso completo dell'eseguibile di python altrimenti verrà sempre usato quello in /usr/bin.

Per quanto riguarda il file da sovrascrivere nei miei sorgenti si chiama Python-ast.h, non Python_ast.h. Sei sicuro di aver sostituito il file giusto?

~FullSyst3m~
18-05-2009, 07:14
Come lanci il benchmark? Ricorda di usare il percorso completo dell'eseguibile di python altrimenti verrà sempre usato quello in /usr/bin.

Per quanto riguarda il file da sovrascrivere nei miei sorgenti si chiama Python-ast.h, non Python_ast.h. Sei sicuro di aver sostituito il file giusto?

Il benchmark lo lancio mettendomi nella cartella dei sorgenti e dando il percorso.

Il file è giusto, c'è solo quello. Ho sbagliato io a scrivere.

~FullSyst3m~
18-05-2009, 07:25
Ho riprovato dando il path completo dei sorgenti e mi parte sempre il 2.6.2

VICIUS
18-05-2009, 07:48
Ho riprovato dando il path completo dei sorgenti e mi parte sempre il 2.6.2

Server il path completo dell'eseguibile. Qualcosa di simile.
$ /home/mirco/python-2.6.1/python Tools/pybench/pybench.py

~FullSyst3m~
18-05-2009, 12:19
Server il path completo dell'eseguibile. Qualcosa di simile.
$ /home/mirco/python-2.6.1/python Tools/pybench/pybench.py

Eh si, ho dato il path completo dei sorgenti in questo senso, ma nisba.

medicina
11-06-2009, 17:00
Buone nuove?

Non vedo aggiornamenti nella pagina del progetto e l'ultima discussione nella mailing-list di Python è del mese scorso.

...A me funziona benissimo, ma mi dispiace per chi non ce l'ha. :-)

cdimauro
14-06-2009, 21:20
Purtroppo non ho avuto tempo per rimetterci mano e finalizzarlo. :cry:

Non appena ho qualche giorno a disposizione faccio un tour de force e ci metto un punto.

DanieleC88
14-06-2009, 21:38
Dimenticavo di darti i risultati dei miei test...

Python:
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.1 (r261:67515, Jun 12 2009, 00:18:27) [GCC 4.3.3]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 7.382 seconds.
* Round 2 done in 6.675 seconds.
* Round 3 done in 6.681 seconds.
* Round 4 done in 6.686 seconds.
* Round 5 done in 6.721 seconds.
* Round 6 done in 6.691 seconds.
* Round 7 done in 6.660 seconds.
* Round 8 done in 6.662 seconds.
* Round 9 done in 6.688 seconds.
* Round 10 done in 6.666 seconds.

-------------------------------------------------------------------------------
Benchmark: 2009-06-14 21:35:21
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.26-2-amd64-x86_64-with-debian-squeeze-sid
Processor:

Python:
Implementation: CPython
Executable: /home/jmc/Documenti/Installazioni/Python-2.6.1/python
Version: 2.6.1
Compiler: GCC 4.3.3
Bits: 32bit
Build: Jun 12 2009 00:18:27 (#r261:67515)
Unicode: UCS2


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 131ms 133ms 0.26us 0.873ms
BuiltinMethodLookup: 111ms 112ms 0.11us 1.022ms
CompareFloats: 121ms 133ms 0.11us 0.428ms
CompareFloatsIntegers: 118ms 139ms 0.15us 0.322ms
CompareIntegers: 147ms 172ms 0.10us 0.646ms
CompareInternedStrings: 132ms 145ms 0.10us 1.661ms
CompareLongs: 108ms 109ms 0.10us 0.377ms
CompareStrings: 114ms 116ms 0.12us 1.103ms
CompareUnicode: 102ms 103ms 0.14us 0.829ms
ComplexPythonFunctionCalls: 125ms 127ms 0.64us 0.538ms
ConcatStrings: 154ms 165ms 0.33us 0.616ms
ConcatUnicode: 113ms 121ms 0.40us 0.394ms
CreateInstances: 132ms 133ms 1.19us 0.434ms
CreateNewInstances: 93ms 94ms 1.12us 0.381ms
CreateStringsWithConcat: 144ms 145ms 0.14us 1.097ms
CreateUnicodeWithConcat: 91ms 93ms 0.23us 0.434ms
DictCreation: 83ms 83ms 0.21us 0.429ms
DictWithFloatKeys: 152ms 153ms 0.17us 0.822ms
DictWithIntegerKeys: 123ms 124ms 0.10us 1.110ms
DictWithStringKeys: 115ms 116ms 0.10us 1.112ms
ForLoops: 128ms 128ms 5.11us 0.068ms
IfThenElse: 118ms 119ms 0.09us 0.824ms
ListSlicing: 77ms 77ms 5.53us 0.115ms
NestedForLoops: 142ms 142ms 0.09us 0.017ms
NormalClassAttribute: 124ms 125ms 0.10us 0.544ms
NormalInstanceAttribute: 115ms 118ms 0.10us 0.550ms
PythonFunctionCalls: 114ms 115ms 0.35us 0.329ms
PythonMethodCalls: 149ms 151ms 0.67us 0.164ms
Recursion: 166ms 167ms 3.34us 0.548ms
SecondImport: 77ms 79ms 0.79us 0.216ms
SecondPackageImport: 80ms 82ms 0.82us 0.217ms
SecondSubmoduleImport: 106ms 109ms 1.09us 0.215ms
SimpleComplexArithmetic: 108ms 110ms 0.13us 0.437ms
SimpleDictManipulation: 126ms 128ms 0.11us 0.539ms
SimpleFloatArithmetic: 116ms 117ms 0.09us 0.649ms
SimpleIntFloatArithmetic: 109ms 110ms 0.08us 0.650ms
SimpleIntegerArithmetic: 110ms 111ms 0.08us 0.649ms
SimpleListManipulation: 109ms 110ms 0.09us 0.712ms
SimpleLongArithmetic: 106ms 107ms 0.16us 0.325ms
SmallLists: 113ms 115ms 0.17us 0.437ms
SmallTuples: 111ms 112ms 0.21us 0.492ms
SpecialClassAttribute: 124ms 125ms 0.10us 0.541ms
SpecialInstanceAttribute: 144ms 146ms 0.12us 0.541ms
StringMappings: 123ms 126ms 0.50us 0.477ms
StringPredicates: 123ms 124ms 0.18us 2.296ms
StringSlicing: 116ms 117ms 0.21us 0.903ms
TryExcept: 128ms 129ms 0.06us 0.810ms
TryFinally: 111ms 112ms 0.70us 0.431ms
TryRaiseExcept: 85ms 86ms 1.34us 0.437ms
TupleSlicing: 104ms 105ms 0.40us 0.074ms
UnicodeMappings: 137ms 137ms 3.82us 0.414ms
UnicodePredicates: 110ms 110ms 0.20us 2.709ms
UnicodeProperties: 125ms 125ms 0.31us 2.260ms
UnicodeSlicing: 109ms 111ms 0.23us 0.807ms
WithFinally: 136ms 137ms 0.85us 0.431ms
WithRaiseExcept: 109ms 111ms 1.38us 0.540ms
-------------------------------------------------------------------------------
Totals: 6596ms 6751ms

wpython:
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.1 (r261:2, Jun 12 2009, 01:53:46) [GCC 4.3.3]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 5.429 seconds.
* Round 2 done in 5.441 seconds.
* Round 3 done in 5.429 seconds.
* Round 4 done in 5.444 seconds.
* Round 5 done in 5.469 seconds.
* Round 6 done in 5.449 seconds.
* Round 7 done in 5.440 seconds.
* Round 8 done in 5.432 seconds.
* Round 9 done in 5.445 seconds.
* Round 10 done in 5.430 seconds.

-------------------------------------------------------------------------------
Benchmark: 2009-06-14 21:23:34
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.26-2-amd64-x86_64-with-debian-squeeze-sid
Processor:

Python:
Implementation: CPython
Executable: /home/jmc/Documenti/Installazioni/wpython-read-only/python
Version: 2.6.1
Compiler: GCC 4.3.3
Bits: 32bit
Build: Jun 12 2009 01:53:46 (#r261:2)
Unicode: UCS2


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 107ms 110ms 0.21us 0.818ms
BuiltinMethodLookup: 97ms 97ms 0.09us 0.951ms
CompareFloats: 102ms 102ms 0.09us 0.398ms
CompareFloatsIntegers: 117ms 119ms 0.13us 0.299ms
CompareIntegers: 111ms 111ms 0.06us 0.613ms
CompareInternedStrings: 92ms 93ms 0.06us 1.531ms
CompareLongs: 98ms 98ms 0.09us 0.350ms
CompareStrings: 90ms 90ms 0.09us 1.014ms
CompareUnicode: 88ms 93ms 0.12us 0.762ms
ComplexPythonFunctionCalls: 114ms 116ms 0.58us 0.502ms
ConcatStrings: 123ms 132ms 0.26us 0.564ms
ConcatUnicode: 101ms 103ms 0.34us 0.369ms
CreateInstances: 104ms 105ms 0.94us 0.404ms
CreateNewInstances: 80ms 81ms 0.97us 0.361ms
CreateStringsWithConcat: 105ms 106ms 0.11us 1.005ms
CreateUnicodeWithConcat: 67ms 67ms 0.17us 0.400ms
DictCreation: 52ms 53ms 0.13us 0.400ms
DictWithFloatKeys: 136ms 138ms 0.15us 0.757ms
DictWithIntegerKeys: 108ms 109ms 0.09us 1.009ms
DictWithStringKeys: 100ms 101ms 0.08us 1.006ms
ForLoops: 119ms 120ms 4.79us 0.064ms
IfThenElse: 65ms 66ms 0.05us 0.756ms
ListSlicing: 76ms 77ms 5.51us 0.105ms
NestedForLoops: 120ms 120ms 0.08us 0.017ms
NormalClassAttribute: 76ms 77ms 0.06us 0.508ms
NormalInstanceAttribute: 67ms 68ms 0.06us 0.504ms
PythonFunctionCalls: 98ms 99ms 0.30us 0.304ms
PythonMethodCalls: 108ms 110ms 0.49us 0.152ms
Recursion: 142ms 144ms 2.88us 0.502ms
SecondImport: 85ms 88ms 0.88us 0.200ms
SecondPackageImport: 89ms 92ms 0.92us 0.200ms
SecondSubmoduleImport: 118ms 119ms 1.19us 0.200ms
SimpleComplexArithmetic: 68ms 69ms 0.08us 0.401ms
SimpleDictManipulation: 109ms 110ms 0.09us 0.506ms
SimpleFloatArithmetic: 57ms 57ms 0.04us 0.604ms
SimpleIntFloatArithmetic: 51ms 51ms 0.04us 0.608ms
SimpleIntegerArithmetic: 51ms 51ms 0.04us 0.603ms
SimpleListManipulation: 80ms 80ms 0.07us 0.654ms
SimpleLongArithmetic: 78ms 80ms 0.12us 0.302ms
SmallLists: 100ms 101ms 0.15us 0.401ms
SmallTuples: 96ms 97ms 0.18us 0.453ms
SpecialClassAttribute: 75ms 76ms 0.06us 0.507ms
SpecialInstanceAttribute: 97ms 97ms 0.08us 0.504ms
StringMappings: 108ms 109ms 0.43us 0.461ms
StringPredicates: 86ms 90ms 0.13us 1.778ms
StringSlicing: 102ms 103ms 0.18us 0.846ms
TryExcept: 134ms 134ms 0.06us 0.755ms
TryFinally: 89ms 89ms 0.56us 0.402ms
TryRaiseExcept: 83ms 85ms 1.33us 0.402ms
TupleSlicing: 91ms 92ms 0.35us 0.067ms
UnicodeMappings: 135ms 135ms 3.74us 0.472ms
UnicodePredicates: 84ms 84ms 0.16us 2.148ms
UnicodeProperties: 107ms 111ms 0.28us 1.778ms
UnicodeSlicing: 92ms 95ms 0.19us 0.744ms
WithFinally: 129ms 130ms 0.81us 0.402ms
WithRaiseExcept: 106ms 107ms 1.34us 0.503ms
-------------------------------------------------------------------------------
Totals: 5359ms 5441ms

ciao ;)

cdimauro
15-06-2009, 08:22
http://www.destinationdoowop.com/thanks-for-the-info.jpg

cdimauro
17-04-2010, 00:11
Ho rilasciato poco fa la versione 1.1 (http://code.google.com/p/wpython2/downloads/list).

Alla prossima PyCon4 presenterò a un talk i maggiori cambiamenti di questa versione.

Se qualcuno volesse provarla, mi farebbe piacere che postasse i risultati di eventuali benchmark come quelli già fatti, oppure e meglio ancora quelli della suite Unladen Swallow (http://code.google.com/p/unladen-swallow/source/browse/#svn/tests) che sono ormai diventati il punto di riferimento per le virtual machine Python.

In quest'ultimo caso per testare (su Windows, ma è la stessa cosa su Linux, OS X, *BSD, ecc.) faccio così:
CD C:\Temp\unladen-swallow-tests

C:\temp\Python-2.6.4\PCbuild\python perf.py -b all,-django,-spambayes,-spitfire,-rietveld C:\temp\Python-2.6.4\PCbuild\python D:\Projects\wpython\wpython10_test\PCbuild\python

VICIUS
17-04-2010, 07:17
Non sono la stessa versione di python ma te li lascio lo stesso. Il primo è quello di default che c'è su snow leopard 2.6.1. Il secondo è il tuo.
Report on Darwin iMac-di-Mirco.local 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26 11:57:13 PST 2010; root:xnu-1504.3.12~1/RELEASE_X86_64 x86_64 i386
Total CPU cores: 2

### 2to3 ###
29.085133 -> 25.601404: 1.1361x faster

### bzr_startup ###
Min: 0.204419 -> 0.096856: 2.1105x faster
Avg: 0.213686 -> 0.113666: 1.8799x faster
Significant (t=71.767819)
Stddev: 0.01277 -> 0.00559: 2.2833x smaller
Timeline: http://tinyurl.com/y7qgndp

### call_method ###
Min: 0.644754 -> 0.622001: 1.0366x faster
Avg: 0.806862 -> 0.725472: 1.1122x faster
Significant (t=11.301638)
Stddev: 0.07300 -> 0.04951: 1.4744x smaller
Timeline: http://tinyurl.com/y3rfsnu

### call_method_slots ###
Min: 0.626559 -> 0.589525: 1.0628x faster
Avg: 0.761122 -> 0.680558: 1.1184x faster
Significant (t=11.706336)
Stddev: 0.06496 -> 0.05371: 1.2093x smaller
Timeline: http://tinyurl.com/y7kkg9m

### call_method_unknown ###
Min: 0.669814 -> 0.593711: 1.1282x faster
Avg: 0.883463 -> 0.746100: 1.1841x faster
Significant (t=8.601215)
Stddev: 0.13619 -> 0.14039: 1.0308x larger
Timeline: http://tinyurl.com/y6u5qut

### call_simple ###
Min: 0.486911 -> 0.435191: 1.1188x faster
Avg: 0.700634 -> 0.590928: 1.1857x faster
Significant (t=9.030587)
Stddev: 0.12218 -> 0.08491: 1.4390x smaller
Timeline: http://tinyurl.com/y2pnbfz

### float ###
Min: 0.126226 -> 0.097072: 1.3003x faster
Avg: 0.174486 -> 0.164656: 1.0597x faster
Significant (t=2.822244)
Stddev: 0.02922 -> 0.04668: 1.5976x larger
Timeline: http://tinyurl.com/y3o7gko

### hg_startup ###
Min: 0.057444 -> 0.042930: 1.3381x faster
Avg: 0.067769 -> 0.050515: 1.3416x faster
Significant (t=109.019677)
Stddev: 0.00293 -> 0.00199: 1.4687x smaller
Timeline: http://tinyurl.com/y5ss3l9

### html5lib ###
Min: 16.410586 -> 15.971322: 1.0275x faster
Avg: 16.579096 -> 16.119135: 1.0285x faster
Significant (t=5.554462)
Stddev: 0.13844 -> 0.12297: 1.1258x smaller
Timeline: http://tinyurl.com/yya44oj

### html5lib_warmup ###
Min: 17.765242 -> 15.582871: 1.1400x faster
Avg: 17.968972 -> 16.065290: 1.1185x faster
Significant (t=10.236030)
Stddev: 0.28980 -> 0.29826: 1.0292x larger
Timeline: http://tinyurl.com/y7osmkp

### iterative_count ###
Min: 0.156827 -> 0.084917: 1.8468x faster
Avg: 0.166389 -> 0.090218: 1.8443x faster
Significant (t=26.855602)
Stddev: 0.01766 -> 0.00950: 1.8586x smaller
Timeline: http://tinyurl.com/y2kz25f

### nbody ###
Min: 0.498760 -> 0.427710: 1.1661x faster
Avg: 0.515754 -> 0.445318: 1.1582x faster
Significant (t=22.964790)
Stddev: 0.01500 -> 0.01566: 1.0442x larger
Timeline: http://tinyurl.com/y7b92bm

### normal_startup ###
Min: 0.534059 -> 0.817747: 1.5312x slower
Avg: 0.547493 -> 0.838141: 1.5309x slower
Significant (t=-127.297104)
Stddev: 0.00799 -> 0.01403: 1.7567x larger
Timeline: http://tinyurl.com/y5tfkm3

### nqueens ###
Min: 0.583106 -> 0.573619: 1.0165x faster
Avg: 0.611182 -> 0.595222: 1.0268x faster
Significant (t=3.893252)
Stddev: 0.02367 -> 0.01674: 1.4142x smaller
Timeline: http://tinyurl.com/y79zhpz

### pickle ###
Min: 1.660705 -> 1.576223: 1.0536x faster
Avg: 1.757750 -> 1.672262: 1.0511x faster
Significant (t=9.284162)
Stddev: 0.04774 -> 0.04427: 1.0785x smaller
Timeline: http://tinyurl.com/y2f3eee

### pickle_dict ###
Min: 1.389026 -> 1.468648: 1.0573x slower
Avg: 1.479180 -> 1.551554: 1.0489x slower
Significant (t=-7.056610)
Stddev: 0.05664 -> 0.04529: 1.2507x smaller
Timeline: http://tinyurl.com/y2kl4no

### pickle_list ###
Min: 0.802236 -> 0.780976: 1.0272x faster
Avg: 0.843450 -> 0.822717: 1.0252x faster
Significant (t=3.353898)
Stddev: 0.02861 -> 0.03305: 1.1554x larger
Timeline: http://tinyurl.com/y2csxb9

### pybench ###
Min: 4906 -> 4344: 1.1294x faster
Avg: 5235 -> 4618: 1.1336x faster

### regex_compile ###
Min: 0.757385 -> 0.663902: 1.1408x faster
Avg: 0.807480 -> 0.698190: 1.1565x faster
Significant (t=20.304562)
Stddev: 0.03027 -> 0.02308: 1.3116x smaller
Timeline: http://tinyurl.com/y5vmu5y

### regex_effbot ###
Min: 0.102901 -> 0.095138: 1.0816x faster
Avg: 0.109344 -> 0.102460: 1.0672x faster
Significant (t=5.515715)
Stddev: 0.00574 -> 0.00670: 1.1678x larger
Timeline: http://tinyurl.com/yyhbuzh

### regex_v8 ###
Min: 0.123948 -> 0.106031: 1.1690x faster
Avg: 0.128534 -> 0.111830: 1.1494x faster
Significant (t=16.677634)
Stddev: 0.00436 -> 0.00558: 1.2787x larger
Timeline: http://tinyurl.com/y2zrssn

### richards ###
Min: 0.354665 -> 0.287113: 1.2353x faster
Avg: 0.381205 -> 0.306374: 1.2442x faster
Significant (t=23.417400)
Stddev: 0.01926 -> 0.01182: 1.6294x smaller
Timeline: http://tinyurl.com/yyzqb7v

### slowpickle ###
Min: 0.753230 -> 0.664495: 1.1335x faster
Avg: 0.801162 -> 0.708291: 1.1311x faster
Significant (t=17.994391)
Stddev: 0.02267 -> 0.02860: 1.2612x larger
Timeline: http://tinyurl.com/y4z6poh

### slowspitfire ###
Min: 0.868708 -> 0.872393: 1.0042x slower
Avg: 0.971014 -> 0.919428: 1.0561x faster
Significant (t=4.503573)
Stddev: 0.07780 -> 0.02253: 3.4529x smaller
Timeline: http://tinyurl.com/y64sn8p

### slowunpickle ###
Min: 0.337317 -> 0.299357: 1.1268x faster
Avg: 0.353311 -> 0.313929: 1.1254x faster
Significant (t=19.034627)
Stddev: 0.01066 -> 0.01002: 1.0629x smaller
Timeline: http://tinyurl.com/y3symau

### startup_nosite ###
Min: 0.317232 -> 0.224719: 1.4117x faster
Avg: 0.333151 -> 0.235118: 1.4170x faster
Significant (t=95.671333)
Stddev: 0.00851 -> 0.00571: 1.4919x smaller
Timeline: http://tinyurl.com/yyvr8m5

### threaded_count ###
Min: 0.194147 -> 0.116080: 1.6725x faster
Avg: 0.216559 -> 0.139140: 1.5564x faster
Significant (t=50.972602)
Stddev: 0.00765 -> 0.00753: 1.0162x smaller
Timeline: http://tinyurl.com/y38bz5h

### unpack_sequence ###
Min: 0.000093 -> 0.000082: 1.1337x faster
Avg: 0.000098 -> 0.000086: 1.1343x faster
Significant (t=25.434812)
Stddev: 0.00007 -> 0.00008: 1.1129x larger
Timeline: http://tinyurl.com/y5hv9ck

### unpickle ###
Min: 1.102754 -> 1.015811: 1.0856x faster
Avg: 1.138448 -> 1.052802: 1.0814x faster
Significant (t=18.018135)
Stddev: 0.02248 -> 0.02499: 1.1118x larger
Timeline: http://tinyurl.com/y49x4pk

### unpickle_list ###
Min: 0.990238 -> 0.881112: 1.1239x faster
Avg: 1.043900 -> 0.933968: 1.1177x faster
Significant (t=21.205782)
Stddev: 0.02977 -> 0.02139: 1.3913x smaller
Timeline: http://tinyurl.com/y49pm9p

cdimauro
17-04-2010, 09:03
Grazie Mirco.

Nel tuo sistema è quasi sempre più veloce e consuma meno memoria, e quando non lo è non perde di molto.

E' un buon segnale che mi conforta. :)

cionci
17-04-2010, 09:45
Il nuovo test non lo posso fare perché mi richiede un certo clang (deve essere qualcosa riferito a LLVM)...

cdimauro
17-04-2010, 09:48
Io non ho uso la LLVM. E nemmeno Python 2.6.4, sul quale ho basato il mio progetto.

Che errore ti dà?

EDIT: OK, ho capito, è colpa della suite di test di US. Ma questa dovrebbe essere del tutto indipendente dal progetto US. Infatti io (e Mirco penso sia nelle mie stesse condizioni) non abbiamo la LLVM installata.

cionci
17-04-2010, 09:55
L'errore ce l'ho quando vado a fare il ./configure del test.
Ora LLVM lo installo senza problemi da repository, ma questo clang no. Quindi non posso perderci più di tanto tempo ;)

cionci
17-04-2010, 09:57
Intanto questi sono i risultati di PYBENCH:
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.4 (r264:75706, Apr 17 2010, 09:36:52) [GCC 4.3.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 5.196 seconds.
* Round 2 done in 5.150 seconds.
* Round 3 done in 5.153 seconds.
* Round 4 done in 5.183 seconds.
* Round 5 done in 5.244 seconds.
* Round 6 done in 5.219 seconds.
* Round 7 done in 5.208 seconds.
* Round 8 done in 5.183 seconds.
* Round 9 done in 5.198 seconds.
* Round 10 done in 5.213 seconds.

-------------------------------------------------------------------------------
Benchmark: 2010-04-17 09:47:01
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.27-17-generic-x86_64-with-debian-lenny-sid
Processor:

Python:
Implementation: CPython
Executable: /tmp/Python-2.6.4/python
Version: 2.6.4
Compiler: GCC 4.3.2
Bits: 64bit
Build: Apr 17 2010 09:36:52 (#r264:75706)
Unicode: UCS2


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 93ms 95ms 0.19us 0.178ms
BuiltinMethodLookup: 72ms 72ms 0.07us 0.207ms
CompareFloats: 97ms 98ms 0.08us 0.251ms
CompareFloatsIntegers: 90ms 91ms 0.10us 0.178ms
CompareIntegers: 114ms 114ms 0.06us 0.357ms
CompareInternedStrings: 111ms 111ms 0.07us 0.888ms
CompareLongs: 87ms 87ms 0.08us 0.206ms
CompareStrings: 121ms 122ms 0.12us 0.603ms
CompareUnicode: 87ms 87ms 0.12us 0.449ms
ComplexPythonFunctionCalls: 97ms 99ms 0.49us 0.291ms
ConcatStrings: 106ms 121ms 0.24us 0.353ms
ConcatUnicode: 83ms 92ms 0.31us 0.239ms
CreateInstances: 102ms 104ms 0.93us 0.242ms
CreateNewInstances: 74ms 76ms 0.91us 0.237ms
CreateStringsWithConcat: 98ms 99ms 0.10us 0.591ms
CreateUnicodeWithConcat: 69ms 71ms 0.18us 0.237ms
DictCreation: 74ms 75ms 0.19us 0.234ms
DictWithFloatKeys: 83ms 84ms 0.09us 0.439ms
DictWithIntegerKeys: 78ms 79ms 0.07us 0.593ms
DictWithStringKeys: 70ms 72ms 0.06us 0.590ms
ForLoops: 66ms 67ms 2.69us 0.042ms
IfThenElse: 83ms 84ms 0.06us 0.442ms
ListSlicing: 77ms 78ms 5.55us 0.061ms
NestedForLoops: 81ms 82ms 0.05us 0.015ms
NestedListComprehensions: 109ms 109ms 9.12us 0.060ms
NormalClassAttribute: 79ms 80ms 0.07us 0.328ms
NormalInstanceAttribute: 78ms 79ms 0.07us 0.334ms
PythonFunctionCalls: 90ms 92ms 0.28us 0.177ms
PythonMethodCalls: 110ms 111ms 0.49us 0.091ms
Recursion: 126ms 128ms 2.56us 0.291ms
SecondImport: 74ms 74ms 0.74us 0.117ms
SecondPackageImport: 80ms 81ms 0.81us 0.118ms
SecondSubmoduleImport: 102ms 103ms 1.03us 0.119ms
SimpleComplexArithmetic: 79ms 79ms 0.09us 0.235ms
SimpleDictManipulation: 82ms 84ms 0.07us 0.305ms
SimpleFloatArithmetic: 82ms 83ms 0.06us 0.352ms
SimpleIntFloatArithmetic: 74ms 75ms 0.06us 0.350ms
SimpleIntegerArithmetic: 73ms 74ms 0.06us 0.352ms
SimpleListComprehensions: 95ms 97ms 8.04us 0.060ms
SimpleListManipulation: 70ms 70ms 0.06us 0.381ms
SimpleLongArithmetic: 86ms 86ms 0.13us 0.176ms
SmallLists: 80ms 81ms 0.12us 0.290ms
SmallTuples: 84ms 86ms 0.16us 0.266ms
SpecialClassAttribute: 78ms 78ms 0.07us 0.295ms
SpecialInstanceAttribute: 159ms 160ms 0.13us 0.298ms
StringMappings: 75ms 76ms 0.30us 0.286ms
StringPredicates: 85ms 86ms 0.12us 1.646ms
StringSlicing: 79ms 88ms 0.16us 0.496ms
TryExcept: 71ms 71ms 0.03us 0.444ms
TryFinally: 76ms 77ms 0.48us 0.236ms
TryRaiseExcept: 75ms 76ms 1.18us 0.236ms
TupleSlicing: 90ms 95ms 0.36us 0.040ms
UnicodeMappings: 93ms 93ms 2.59us 0.357ms
UnicodePredicates: 86ms 86ms 0.16us 1.972ms
UnicodeProperties: 91ms 92ms 0.23us 1.650ms
UnicodeSlicing: 83ms 94ms 0.19us 0.445ms
WithFinally: 105ms 106ms 0.66us 0.236ms
WithRaiseExcept: 86ms 87ms 1.08us 0.293ms
-------------------------------------------------------------------------------
Totals: 5097ms 5195ms

-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using Python 2.5.2 (r252:60911, Jan 20 2010, 23:33:04) [GCC 4.3.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 5.468 seconds.
* Round 2 done in 5.405 seconds.
* Round 3 done in 5.455 seconds.
* Round 4 done in 5.372 seconds.
* Round 5 done in 5.412 seconds.
* Round 6 done in 5.424 seconds.
* Round 7 done in 5.405 seconds.
* Round 8 done in 5.452 seconds.
* Round 9 done in 5.389 seconds.
* Round 10 done in 5.401 seconds.

-------------------------------------------------------------------------------
Benchmark: 2010-04-17 09:48:10
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.27-17-generic-x86_64-with-debian-lenny-sid
Processor:

Python:
Implementation: n/a
Executable: /usr/bin/python
Version: 2.5.2
Compiler: GCC 4.3.2
Bits: 64bit
Build: Jan 20 2010 23:33:04 (#r252:60911)
Unicode: UCS4


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 98ms 100ms 0.20us 0.177ms
BuiltinMethodLookup: 80ms 81ms 0.08us 0.206ms
CompareFloats: 115ms 116ms 0.10us 0.235ms
CompareFloatsIntegers: 110ms 114ms 0.13us 0.176ms
CompareIntegers: 120ms 121ms 0.07us 0.352ms
CompareInternedStrings: 85ms 85ms 0.06us 0.888ms
CompareLongs: 90ms 91ms 0.09us 0.206ms
CompareStrings: 101ms 102ms 0.10us 0.659ms
CompareUnicode: 71ms 73ms 0.10us 0.455ms
ComplexPythonFunctionCalls: 152ms 155ms 0.78us 0.295ms
ConcatStrings: 111ms 126ms 0.25us 0.374ms
ConcatUnicode: 138ms 150ms 0.50us 0.264ms
CreateInstances: 96ms 99ms 0.88us 0.239ms
CreateNewInstances: 79ms 83ms 0.99us 0.228ms
CreateStringsWithConcat: 101ms 102ms 0.10us 0.587ms
CreateUnicodeWithConcat: 85ms 89ms 0.22us 0.235ms
DictCreation: 77ms 78ms 0.20us 0.235ms
DictWithFloatKeys: 82ms 83ms 0.09us 0.443ms
DictWithIntegerKeys: 82ms 84ms 0.07us 0.587ms
DictWithStringKeys: 73ms 74ms 0.06us 0.591ms
ForLoops: 64ms 65ms 2.58us 0.042ms
IfThenElse: 85ms 87ms 0.06us 0.463ms
ListSlicing: 78ms 78ms 5.55us 0.064ms
NestedForLoops: 83ms 83ms 0.06us 0.015ms
NestedListComprehensions: 116ms 117ms 9.73us 0.061ms
NormalClassAttribute: 81ms 81ms 0.07us 0.308ms
NormalInstanceAttribute: 76ms 78ms 0.06us 0.304ms
PythonFunctionCalls: 92ms 93ms 0.28us 0.182ms
PythonMethodCalls: 107ms 109ms 0.48us 0.093ms
Recursion: 120ms 124ms 2.47us 0.300ms
SecondImport: 72ms 73ms 0.73us 0.121ms
SecondPackageImport: 77ms 79ms 0.79us 0.121ms
SecondSubmoduleImport: 100ms 101ms 1.01us 0.121ms
SimpleComplexArithmetic: 90ms 90ms 0.10us 0.242ms
SimpleDictManipulation: 83ms 86ms 0.07us 0.302ms
SimpleFloatArithmetic: 90ms 91ms 0.07us 0.363ms
SimpleIntFloatArithmetic: 73ms 74ms 0.06us 0.363ms
SimpleIntegerArithmetic: 73ms 73ms 0.06us 0.363ms
SimpleListComprehensions: 101ms 102ms 8.52us 0.063ms
SimpleListManipulation: 76ms 77ms 0.07us 0.399ms
SimpleLongArithmetic: 86ms 87ms 0.13us 0.181ms
SmallLists: 82ms 83ms 0.12us 0.242ms
SmallTuples: 83ms 85ms 0.16us 0.272ms
SpecialClassAttribute: 79ms 80ms 0.07us 0.306ms
SpecialInstanceAttribute: 160ms 162ms 0.13us 0.304ms
StringMappings: 80ms 80ms 0.32us 0.294ms
StringPredicates: 98ms 100ms 0.14us 1.701ms
StringSlicing: 78ms 83ms 0.15us 0.529ms
TryExcept: 71ms 72ms 0.03us 0.453ms
TryFinally: 82ms 83ms 0.52us 0.233ms
TryRaiseExcept: 82ms 83ms 1.30us 0.242ms
TupleSlicing: 88ms 91ms 0.35us 0.041ms
UnicodeMappings: 96ms 96ms 2.67us 0.340ms
UnicodePredicates: 88ms 89ms 0.16us 2.025ms
UnicodeProperties: 87ms 88ms 0.22us 1.683ms
UnicodeSlicing: 89ms 94ms 0.19us 0.472ms
WithFinally: 107ms 108ms 0.68us 0.243ms
WithRaiseExcept: 89ms 91ms 1.13us 0.317ms
-------------------------------------------------------------------------------
Totals: 5306ms 5418ms

Il tuo:
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using CPython 2.6.4 (r264:75706, Apr 17 2010, 09:14:50) [GCC 4.3.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 4.351 seconds.
* Round 2 done in 4.376 seconds.
* Round 3 done in 4.305 seconds.
* Round 4 done in 4.358 seconds.
* Round 5 done in 4.301 seconds.
* Round 6 done in 4.304 seconds.
* Round 7 done in 4.358 seconds.
* Round 8 done in 4.297 seconds.
* Round 9 done in 4.306 seconds.
* Round 10 done in 4.287 seconds.

-------------------------------------------------------------------------------
Benchmark: 2010-04-17 09:50:35
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: Linux-2.6.27-17-generic-x86_64-with-debian-lenny-sid
Processor:

Python:
Implementation: CPython
Executable: /tmp/wpython11/python
Version: 2.6.4
Compiler: GCC 4.3.2
Bits: 64bit
Build: Apr 17 2010 09:14:50 (#r264:75706)
Unicode: UCS2


Test minimum average operation overhead
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 79ms 84ms 0.16us 0.147ms
BuiltinMethodLookup: 63ms 64ms 0.06us 0.171ms
CompareFloats: 68ms 69ms 0.06us 0.196ms
CompareFloatsIntegers: 72ms 72ms 0.08us 0.147ms
CompareIntegers: 60ms 60ms 0.03us 0.293ms
CompareInternedStrings: 69ms 71ms 0.05us 0.749ms
CompareLongs: 62ms 62ms 0.06us 0.171ms
CompareStrings: 92ms 93ms 0.09us 0.502ms
CompareUnicode: 65ms 65ms 0.09us 0.382ms
ComplexPythonFunctionCalls: 88ms 89ms 0.44us 0.246ms
ConcatStrings: 95ms 116ms 0.23us 0.308ms
ConcatUnicode: 78ms 91ms 0.30us 0.217ms
CreateInstances: 85ms 87ms 0.78us 0.200ms
CreateNewInstances: 64ms 65ms 0.78us 0.210ms
CreateStringsWithConcat: 95ms 97ms 0.10us 0.489ms
CreateUnicodeWithConcat: 58ms 58ms 0.15us 0.196ms
DictCreation: 47ms 49ms 0.12us 0.199ms
DictWithFloatKeys: 75ms 77ms 0.09us 0.372ms
DictWithIntegerKeys: 67ms 67ms 0.06us 0.495ms
DictWithStringKeys: 57ms 58ms 0.05us 0.496ms
ForLoops: 58ms 59ms 2.38us 0.039ms
IfThenElse: 46ms 47ms 0.03us 0.370ms
ListSlicing: 77ms 78ms 5.56us 0.058ms
NestedForLoops: 65ms 68ms 0.05us 0.016ms
NestedListComprehensions: 90ms 93ms 7.73us 0.050ms
NormalClassAttribute: 57ms 57ms 0.05us 0.248ms
NormalInstanceAttribute: 53ms 54ms 0.05us 0.248ms
PythonFunctionCalls: 80ms 80ms 0.24us 0.148ms
PythonMethodCalls: 99ms 101ms 0.45us 0.077ms
Recursion: 110ms 112ms 2.23us 0.245ms
SecondImport: 69ms 70ms 0.70us 0.100ms
SecondPackageImport: 77ms 77ms 0.77us 0.139ms
SecondSubmoduleImport: 101ms 103ms 1.03us 0.109ms
SimpleComplexArithmetic: 65ms 66ms 0.08us 0.200ms
SimpleDictManipulation: 72ms 72ms 0.06us 0.249ms
SimpleFloatArithmetic: 46ms 46ms 0.04us 0.310ms
SimpleIntFloatArithmetic: 44ms 44ms 0.03us 0.293ms
SimpleIntegerArithmetic: 44ms 44ms 0.03us 0.293ms
SimpleListComprehensions: 78ms 80ms 6.64us 0.051ms
SimpleListManipulation: 50ms 51ms 0.04us 0.324ms
SimpleLongArithmetic: 68ms 68ms 0.10us 0.153ms
SmallLists: 66ms 68ms 0.10us 0.196ms
SmallTuples: 64ms 66ms 0.12us 0.220ms
SpecialClassAttribute: 55ms 56ms 0.05us 0.316ms
SpecialInstanceAttribute: 138ms 138ms 0.12us 0.247ms
StringMappings: 69ms 70ms 0.28us 0.255ms
StringPredicates: 69ms 70ms 0.10us 1.276ms
StringSlicing: 74ms 83ms 0.15us 0.434ms
TryExcept: 60ms 60ms 0.03us 0.376ms
TryFinally: 67ms 68ms 0.42us 0.199ms
TryRaiseExcept: 75ms 76ms 1.19us 0.200ms
TupleSlicing: 82ms 86ms 0.33us 0.041ms
UnicodeMappings: 93ms 93ms 2.59us 0.357ms
UnicodePredicates: 73ms 74ms 0.14us 1.529ms
UnicodeProperties: 83ms 83ms 0.21us 1.272ms
UnicodeSlicing: 80ms 91ms 0.18us 0.393ms
WithFinally: 96ms 97ms 0.61us 0.196ms
WithRaiseExcept: 81ms 82ms 1.03us 0.249ms
-------------------------------------------------------------------------------
Totals: 4212ms 4324ms

cionci
17-04-2010, 10:00
Aspetta...forse ho capito...devo fare solo il checkout del test ;)

cionci
17-04-2010, 10:16
Ho anche beccato l'upgrade del server di un repository necessario per il test :doh:
http://spambayes.svn.sourceforge.net/svnroot/spambayes/trunk/spambayes

DanieleC88
17-04-2010, 10:51
Appena lancio make mi sputa fuori questo errore:

jmc@sauron:~/Documenti/Installazioni/wpython11$ make -j3
./Parser/asdl_c.py -h ./Include ./Parser/Python.asdl
make: execvp: ./Parser/asdl_c.py: Permission denied
make: *** [Include/Python-ast.h] Error 127

È un banale errore di permessi (che un "chmod +x" risolve), è normale? Magari è meglio invocare fisicamente Python:

python ./Parser/asdl_c.py -h ./Include ./Parser/Python.asdl

EDIT: anche qui:
env: /home/jmc/Documenti/Installazioni/wpython11/Modules/_ctypes/libffi/configure: Permission denied
Failed to configure _ctypes module

cionci
17-04-2010, 10:58
Per fare il checkout del test:
svn checkout http://unladen-swallow.googlecode.com/svn/tests/ unladen-swallow

Anche su Linux ho avuto problemi di permessi, ma nel mio caso credo sia normale.

VICIUS
17-04-2010, 10:59
EDIT: OK, ho capito, è colpa della suite di test di US. Ma questa dovrebbe essere del tutto indipendente dal progetto US. Infatti io (e Mirco penso sia nelle mie stesse condizioni) non abbiamo la LLVM installata.
Su osx clang è installato di default.

cdimauro
17-04-2010, 11:41
Aspetta...forse ho capito...devo fare solo il checkout del test ;)
Sì, esatto.
Ho anche beccato l'upgrade del server di un repository necessario per il test :doh:
http://spambayes.svn.sourceforge.net/svnroot/spambayes/trunk/spambayes
Strano. Io ho fatto solo il checkout.
Appena lancio make mi sputa fuori questo errore:

jmc@sauron:~/Documenti/Installazioni/wpython11$ make -j3
./Parser/asdl_c.py -h ./Include ./Parser/Python.asdl
make: execvp: ./Parser/asdl_c.py: Permission denied
make: *** [Include/Python-ast.h] Error 127

È un banale errore di permessi (che un "chmod +x" risolve), è normale? Magari è meglio invocare fisicamente Python:

python ./Parser/asdl_c.py -h ./Include ./Parser/Python.asdl

EDIT: anche qui:
env: /home/jmc/Documenti/Installazioni/wpython11/Modules/_ctypes/libffi/configure: Permission denied
Failed to configure _ctypes module
Sì, perché manca il permesso di esecuzione in entrambi i file, configure e asdl_c.py.

Purtroppo con Mercurial (per la precisione con TortoriseHG, ma è lo stesso) su Windows non sono riuscito a settare questo flag. :muro:

Se c'è qualcuno che può darmi una mano gliene sarei enormemente grato (è un grosso problema se penso di contribuire al ramo ufficiale di Python).
Per fare il checkout del test:
svn checkout http://unladen-swallow.googlecode.com/svn/tests/ unladen-swallow

Anche su Linux ho avuto problemi di permessi, ma nel mio caso credo sia normale.
Da me nessun problema di permessi.
Su osx clang è installato di default.
Ah, ok. Però su Windows no. :D

Intanto ringrazio tutti per il tempo che avete o state perdendo.

x Riccardo: ottimi risultati anche sulla tua macchina. :)

cionci
17-04-2010, 11:48
Strano. Io ho fatto solo il checkout.

Ma quando fai il checkout del test ti viene fatto anche il checkout automaticamente da altri repository e quello è down...anche ora...

cdimauro
17-04-2010, 11:51
Ahhhh Ho capito. Ha dei riferimenti esterni.

Grazie per la segnalazione.

medicina
17-04-2010, 19:20
Gradita notizia, Cesare. Ti allego i bench fatti con Python 2.6.5, wpython 1.0 e 1.1. Sono fatti con pybench, forse domani per l'altro programma. Aggiungo pure una patch per Mercurial che sistema i permessi, se non riesci ad ovviare direttamente tu (non conosco bene hg, ma può darsi che con Cygwin si riesca a intervenire)...

Vorrei segnalarti anche che il repository predefinito (http://code.google.com/p/wpython2/source/checkout) punta al codice originale di Python, per ottenere la versione 1.1 bisogna selezionarla manualmente, oltre che accorgersene...

cdimauro
17-04-2010, 22:14
Gradita notizia, Cesare. Ti allego i bench fatti con Python 2.6.5, wpython 1.0 e 1.1. Sono fatti con pybench, forse domani per l'altro programma.
OK grazie. Con la tua macchina le differenze sono meno marcate, ma il guadagno c'è comunque.
Aggiungo pure una patch per Mercurial che sistema i permessi, se non riesci ad ovviare direttamente tu (non conosco bene hg, ma può darsi che con Cygwin si riesca a intervenire)...
Ho provato ad applicare la patch, ma non l'accetta:
d:\Projects\wpython\wpython11>hg patch modifiche_permessi.hg
applying modifiche_permessi.hg
abort: no diffs found
Anch'io conosco poco Mercurial, purtroppo.
Vorrei segnalarti anche che il repository predefinito (http://code.google.com/p/wpython2/source/checkout) punta al codice originale di Python, per ottenere la versione 1.1 bisogna selezionarla manualmente, oltre che accorgersene...
Ho provato a modificare il path da Google Code in modo da farlo puntare a wpython 1.1, ma non ci sono riuscito. :muro:

medicina
17-04-2010, 22:35
OK grazie. Con la tua macchina le differenze sono meno marcate, ma il guadagno c'è comunque.

È passato un po' di tempo, quindi posso sbagliarmi, ma ricordavo dei margini migliori rispetto al Python originale con la mia CPU, forse è migliorato anch'esso... Comunque, il beneficio di questa re-implementazione è notevole.


Ho provato ad applicare la patch, ma non l'accetta:
d:\Projects\wpython\wpython11>hg patch modifiche_permessi.hg
applying modifiche_permessi.hg
abort: no diffs found
Anch'io conosco poco Mercurial, purtroppo.

Il comando giusto è 'unbundle'.

Ho provato a modificare il path da Google Code in modo da farlo puntare a wpython 1.1, ma non ci sono riuscito. :muro:

http://code.google.com/p/wpython3/ ? Scherzo... ;)

cdimauro
18-04-2010, 07:29
È passato un po' di tempo, quindi posso sbagliarmi, ma ricordavo dei margini migliori rispetto al Python originale con la mia CPU, forse è migliorato anch'esso...
Sì, è migliorato anche il ramo principale.
Comunque, il beneficio di questa re-implementazione è notevole.
Questa è l'ultima versione di WPython: non ne seguiranno altre.

Il ramo 2.x di Python è praticamente morto: la 2.7 è già in beta, per cui non ci sono più margini per integrare i miei cambiamenti nella versione ufficiale. Inoltre questa sarà l'ultima versione di Python 2.x: non ne seguiranno altre perché per la comunità di sviluppatori il futuro di questo linguaggio è rappresentato dalla 3.x (e mi sembra anche giusto).
A parte che ci sarebbe solo da impazzire nel supportare due VM diverse. :D

Mi sono offerto di portare tutto su Python 3.x (penso a partire dalla 2), e continuare lì con altre ottimizzazioni (ne ho ancora decine in mente :D) creando un mio branch, e SEMBRA che non ci siano state opposizioni. Speriamo bene. :)
Il comando giusto è 'unbundle'.
Pare che abbia funzionato, grazie. :)

Mi spieghi come hai creato quel file .hg solo per cambiare il flag x dei file? Così dovesse succedermi nuovamente posso provvedere io a crearlo e a eseguire l'aggiornamento.
http://code.google.com/p/wpython3/ ? Scherzo... ;)
:rotfl: Spero di non forkare più. :p

cionci
18-04-2010, 13:18
A parità di versione dell'interprete.
Report on Linux cionci-desktop 2.6.27-17-generic #1 SMP Fri Mar 12 02:08:25 UTC 2010 x86_64
Total CPU cores: 2

### 2to3 ###
27.729733 -> 25.521595: 1.0865x faster

### bzr_startup ###
Min: 0.072004 -> 0.068004: 1.0588x faster
Avg: 0.094326 -> 0.091926: 1.0261x faster
Not significant
Stddev: 0.00883 -> 0.00958: 1.0851x larger
Timeline: http://tinyurl.com/y5zc5ca

### call_method ###
Min: 0.630349 -> 0.566228: 1.1132x faster
Avg: 0.655913 -> 0.574280: 1.1421x faster
Significant (t=54.712328)
Stddev: 0.01462 -> 0.01096: 1.3344x smaller
Timeline: http://tinyurl.com/y6eg77c

### call_method_slots ###
Min: 0.635804 -> 0.511669: 1.2426x faster
Avg: 0.660014 -> 0.528936: 1.2478x faster
Significant (t=69.342882)
Stddev: 0.01859 -> 0.01380: 1.3470x smaller
Timeline: http://tinyurl.com/y7p9esb

### call_method_unknown ###
Min: 0.766309 -> 0.562713: 1.3618x faster
Avg: 0.774030 -> 0.585773: 1.3214x faster
Significant (t=90.713925)
Stddev: 0.00759 -> 0.02426: 3.1937x larger
Timeline: http://tinyurl.com/y6y6w7a

### call_simple ###
Min: 0.498106 -> 0.451661: 1.1028x faster
Avg: 0.502283 -> 0.460072: 1.0917x faster
Significant (t=62.530336)
Stddev: 0.00738 -> 0.00373: 1.9763x smaller
Timeline: http://tinyurl.com/y5gt8qa

### float ###
Min: 0.117934 -> 0.102821: 1.1470x faster
Avg: 0.129057 -> 0.117482: 1.0985x faster
Significant (t=12.577691)
Stddev: 0.00811 -> 0.01208: 1.4897x larger
Timeline: http://tinyurl.com/y2pc4wj

### hg_startup ###
Min: 0.012000 -> 0.012001: 1.0001x slower
Avg: 0.033594 -> 0.032258: 1.0414x faster
Significant (t=3.596547)
Stddev: 0.00597 -> 0.00578: 1.0320x smaller
Timeline: http://tinyurl.com/y449a8r

### html5lib ###
Min: 16.581036 -> 15.668980: 1.0582x faster
Avg: 16.823451 -> 15.946597: 1.0550x faster
Significant (t=4.738181)
Stddev: 0.22787 -> 0.34542: 1.5159x larger
Timeline: http://tinyurl.com/y3wx52k

### html5lib_warmup ###
Min: 16.436294 -> 15.664941: 1.0492x faster
Avg: 16.810495 -> 15.983748: 1.0517x faster
Significant (t=2.827967)
Stddev: 0.43953 -> 0.48388: 1.1009x larger
Timeline: http://tinyurl.com/y74vue8

### iterative_count ###
Min: 0.189088 -> 0.083317: 2.2695x faster
Avg: 0.191612 -> 0.088073: 2.1756x faster
Significant (t=65.385891)
Stddev: 0.00501 -> 0.01001: 1.9975x larger
Timeline: http://tinyurl.com/y65yy5c

### nbody ###
Min: 0.568523 -> 0.426052: 1.3344x faster
Avg: 0.580190 -> 0.428620: 1.3536x faster
Significant (t=72.626477)
Stddev: 0.01450 -> 0.00273: 5.3178x smaller
Timeline: http://tinyurl.com/y5hbwsy

### normal_startup ###
Min: 0.420100 -> 0.408876: 1.0275x faster
Avg: 0.475876 -> 0.489076: 1.0277x slower
Not significant
Stddev: 0.04082 -> 0.05543: 1.3579x larger
Timeline: http://tinyurl.com/y5jdfgq

### nqueens ###
Min: 0.585605 -> 0.577289: 1.0144x faster
Avg: 0.603038 -> 0.594904: 1.0137x faster
Significant (t=2.026307)
Stddev: 0.01851 -> 0.02152: 1.1629x larger
Timeline: http://tinyurl.com/yydzdhw

### pickle ###
Min: 1.592286 -> 1.584492: 1.0049x faster
Avg: 1.611001 -> 1.606726: 1.0027x faster
Not significant
Stddev: 0.01343 -> 0.03570: 2.6586x larger
Timeline: http://tinyurl.com/yyax7wc

### pickle_dict ###
Min: 1.316577 -> 1.298239: 1.0141x faster
Avg: 1.320249 -> 1.311228: 1.0069x faster
Significant (t=3.270732)
Stddev: 0.00367 -> 0.01915: 5.2196x larger
Timeline: http://tinyurl.com/y2smb8n

### pickle_list ###
Min: 0.734164 -> 0.727414: 1.0093x faster
Avg: 0.749225 -> 0.738023: 1.0152x faster
Significant (t=3.523434)
Stddev: 0.01996 -> 0.01035: 1.9291x smaller
Timeline: http://tinyurl.com/yybbuct

### pybench ###
Min: 5133 -> 4264: 1.2038x faster
Avg: 5370 -> 4448: 1.2073x faster

### regex_compile ###
Min: 0.783521 -> 0.706420: 1.1091x faster
Avg: 0.805385 -> 0.743189: 1.0837x faster
Significant (t=14.697890)
Stddev: 0.01900 -> 0.02312: 1.2168x larger
Timeline: http://tinyurl.com/y4ng9oz

### regex_effbot ###
Min: 0.106946 -> 0.108064: 1.0105x slower
Avg: 0.108937 -> 0.112714: 1.0347x slower
Significant (t=-4.189386)
Stddev: 0.00158 -> 0.00618: 3.9173x larger
Timeline: http://tinyurl.com/y2xs6yp

### regex_v8 ###
Min: 0.114305 -> 0.110961: 1.0301x faster
Avg: 0.119100 -> 0.113885: 1.0458x faster
Significant (t=6.210478)
Stddev: 0.00525 -> 0.00278: 1.8876x smaller
Timeline: http://tinyurl.com/y5q2nlh

### richards ###
Min: 0.376030 -> 0.309641: 1.2144x faster
Avg: 0.389031 -> 0.314998: 1.2350x faster
Significant (t=29.499544)
Stddev: 0.01745 -> 0.00325: 5.3669x smaller
Timeline: http://tinyurl.com/y5rh4av

### slowpickle ###
Min: 0.800369 -> 0.711095: 1.1255x faster
Avg: 0.824734 -> 0.735770: 1.1209x faster
Significant (t=19.434640)
Stddev: 0.02554 -> 0.01989: 1.2842x smaller
Timeline: http://tinyurl.com/y79lh35

### slowspitfire ###
Min: 0.813913 -> 0.761560: 1.0687x faster
Avg: 0.829754 -> 0.841118: 1.0137x slower
Not significant
Stddev: 0.01202 -> 0.05522: 4.5958x larger
Timeline: http://tinyurl.com/y4y6f4x

### slowunpickle ###
Min: 0.369238 -> 0.296829: 1.2439x faster
Avg: 0.384044 -> 0.300151: 1.2795x faster
Significant (t=32.788791)
Stddev: 0.01766 -> 0.00391: 4.5186x smaller
Timeline: http://tinyurl.com/y84c2bp

### startup_nosite ###
Min: 0.173227 -> 0.183291: 1.0581x slower
Avg: 0.234029 -> 0.235226: 1.0051x slower
Not significant
Stddev: 0.02222 -> 0.01951: 1.1389x smaller
Timeline: http://tinyurl.com/y2esfmd

### threaded_count ###
Min: 0.203453 -> 0.084667: 2.4030x faster
Avg: 0.263979 -> 0.105661: 2.4984x faster
Significant (t=26.001645)
Stddev: 0.03833 -> 0.01960: 1.9552x smaller
Timeline: http://tinyurl.com/y74qvbf

### unpack_sequence ###
Min: 0.000116 -> 0.000108: 1.0728x faster
Avg: 0.000121 -> 0.000118: 1.0261x faster
Significant (t=13.346440)
Stddev: 0.00004 -> 0.00004: 1.0544x larger
Timeline: http://tinyurl.com/y6rld7k

### unpickle ###
Min: 0.919231 -> 0.922668: 1.0037x slower
Avg: 0.936096 -> 0.947798: 1.0125x slower
Significant (t=-3.379601)
Stddev: 0.01505 -> 0.01931: 1.2834x larger
Timeline: http://tinyurl.com/y3ymn85

### unpickle_list ###
Min: 0.690399 -> 0.690025: 1.0005x faster
Avg: 0.729519 -> 0.698789: 1.0440x faster
Significant (t=11.660568)
Stddev: 0.01430 -> 0.01195: 1.1965x smaller
Timeline: http://tinyurl.com/y38lfuh

^TiGeRShArK^
18-04-2010, 15:39
buon lavoro cesare, complimenti. :)

cdimauro
18-04-2010, 20:29
Grazie "Tiger". :)

E grazie a Riccardo per i risultati (nettamente positivi :D).

DanieleC88
18-04-2010, 20:32
Già che ci sono ti dò anche i miei, sfornati caldi caldi:
Report on Linux sauron 2.6.33-ARCH #1 SMP PREEMPT Sun Apr 4 10:27:30 CEST 2010 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 5200+
Total CPU cores: 2

### 2to3 ###
29.598071 -> 23.691789: 1.2493x faster

### bzr_startup ###
Min: 0.083328 -> 0.076661: 1.0870x faster
Avg: 0.100727 -> 0.094061: 1.0709x faster
Significant (t=5.464159)
Stddev: 0.00863 -> 0.00863: 1.0000x larger
Timeline: http://tinyurl.com/y6mng7k

### call_method ###
Min: 0.796609 -> 0.538237: 1.4800x faster
Avg: 0.816184 -> 0.547101: 1.4918x faster
Significant (t=92.212665)
Stddev: 0.03177 -> 0.01636: 1.9417x smaller
Timeline: http://tinyurl.com/yygle37

### call_method_slots ###
Min: 0.780177 -> 0.535730: 1.4563x faster
Avg: 0.797951 -> 0.544117: 1.4665x faster
Significant (t=104.627536)
Stddev: 0.02414 -> 0.01733: 1.3926x smaller
Timeline: http://tinyurl.com/y76hawm

### call_method_unknown ###
Min: 0.808852 -> 0.610603: 1.3247x faster
Avg: 0.821008 -> 0.614395: 1.3363x faster
Significant (t=109.946891)
Stddev: 0.02158 -> 0.00800: 2.6994x smaller
Timeline: http://tinyurl.com/y43e5fl

### call_simple ###
Min: 0.602984 -> 0.484837: 1.2437x faster
Avg: 0.627628 -> 0.508925: 1.2332x faster
Significant (t=56.792486)
Stddev: 0.02009 -> 0.01587: 1.2658x smaller
Timeline: http://tinyurl.com/yyrerh8

### float ###
Min: 0.145489 -> 0.120753: 1.2048x faster
Avg: 0.157275 -> 0.131557: 1.1955x faster
Significant (t=29.200486)
Stddev: 0.01020 -> 0.00948: 1.0763x smaller
Timeline: http://tinyurl.com/y5h4frq

### hg_startup ###
Min: 0.013332 -> 0.016666: 1.2501x slower
Avg: 0.030811 -> 0.033631: 1.0915x slower
Significant (t=-7.625262)
Stddev: 0.00610 -> 0.00558: 1.0933x smaller
Timeline: http://tinyurl.com/y7c2vbv

### html5lib ###
Min: 16.772239 -> 13.632444: 1.2303x faster
Avg: 17.400199 -> 13.809100: 1.2601x faster
Significant (t=19.710438)
Stddev: 0.35648 -> 0.19722: 1.8075x smaller
Timeline: http://tinyurl.com/y52q84h

### html5lib_warmup ###
Min: 17.155307 -> 13.597860: 1.2616x faster
Avg: 17.758442 -> 14.069391: 1.2622x faster
Significant (t=12.638530)
Stddev: 0.58006 -> 0.29922: 1.9386x smaller
Timeline: http://tinyurl.com/y5ragx4

### iterative_count ###
Min: 0.272019 -> 0.144380: 1.8841x faster
Avg: 0.321844 -> 0.155405: 2.0710x faster
Significant (t=23.655896)
Stddev: 0.04319 -> 0.02469: 1.7493x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.46044492722&chco=FF0000,0000FF&chdl=/usr/bin/python|../wpython11/python&chds=0,1.46044492722&chd=t:0.28,0.28,0.28,0.28,0.33,0.33,0.31,0.31,0.29,0.3,0.32,0.35,0.29,0.3,0.29,0.28,0.27,0.27,0.27,0.29,0.32,0.35,0.31,0.28,0.27,0.3,0.35,0.3,0.29,0.28,0.3,0.29,0.31,0.31,0.33,0.32,0.34,0.41,0.34,0.33,0.33,0.34,0.34,0.36,0.4,0.43,0.46,0.41,0.38,0.35|0.3,0.15,0.15,0.15,0.17,0.15,0.15,0.15,0.16,0.15,0.14,0.14,0.2,0.16,0.17,0.19,0.16,0.16,0.16,0.2,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.15,0.16,0.16,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.15,0.14,0.14,0.15,0.14,0.17,0.15&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=iterative_count

### nbody ###
Min: 0.639303 -> 0.496505: 1.2876x faster
Avg: 0.663221 -> 0.507123: 1.3078x faster
Significant (t=42.102614)
Stddev: 0.01815 -> 0.01892: 1.0424x larger
Timeline: http://tinyurl.com/y64lglq

### normal_startup ###
Min: 0.374472 -> 0.461435: 1.2322x slower
Avg: 0.413358 -> 0.515210: 1.2464x slower
Significant (t=-17.591195)
Stddev: 0.02972 -> 0.02815: 1.0558x smaller
Timeline: http://tinyurl.com/y7qj6zz

### nqueens ###
Min: 0.698012 -> 0.507417: 1.3756x faster
Avg: 0.748165 -> 0.559723: 1.3367x faster
Significant (t=21.603119)
Stddev: 0.03138 -> 0.05310: 1.6921x larger
Timeline: http://tinyurl.com/y3xv95e

### pickle ###
Min: 1.584518 -> 1.526627: 1.0379x faster
Avg: 1.673835 -> 1.658376: 1.0093x faster
Not significant
Stddev: 0.06500 -> 0.07568: 1.1644x larger
Timeline: http://tinyurl.com/y4224pp

### pickle_dict ###
Min: 1.568636 -> 1.498363: 1.0469x faster
Avg: 1.618752 -> 1.575946: 1.0272x faster
Significant (t=4.120055)
Stddev: 0.04758 -> 0.05598: 1.1767x larger
Timeline: http://tinyurl.com/yyzl6b5

### pickle_list ###
Min: 0.771403 -> 0.752089: 1.0257x faster
Avg: 0.797367 -> 0.778438: 1.0243x faster
Significant (t=3.157783)
Stddev: 0.02620 -> 0.03332: 1.2721x larger
Timeline: http://tinyurl.com/yyp5cjx

### pybench ###
Min: 5994 -> 4470: 1.3409x faster
Avg: 6250 -> 4781: 1.3073x faster

### regex_compile ###
Min: 0.838116 -> 0.664657: 1.2610x faster
Avg: 0.846488 -> 0.691629: 1.2239x faster
Significant (t=31.710076)
Stddev: 0.01236 -> 0.03224: 2.6085x larger
Timeline: http://tinyurl.com/y65ceh8

### regex_effbot ###
Min: 0.169898 -> 0.152830: 1.1117x faster
Avg: 0.179772 -> 0.158301: 1.1356x faster
Significant (t=13.100118)
Stddev: 0.00746 -> 0.00887: 1.1895x larger
Timeline: http://tinyurl.com/yyazgxh

### regex_v8 ###
Min: 0.152255 -> 0.134914: 1.1285x faster
Avg: 0.159778 -> 0.144822: 1.1033x faster
Significant (t=10.310186)
Stddev: 0.00598 -> 0.00834: 1.3944x larger
Timeline: http://tinyurl.com/y4znhxx

### richards ###
Min: 0.361250 -> 0.281802: 1.2819x faster
Avg: 0.384307 -> 0.294562: 1.3047x faster
Significant (t=27.621845)
Stddev: 0.02043 -> 0.01052: 1.9419x smaller
Timeline: http://tinyurl.com/y3hx8w2

### slowpickle ###
Min: 0.826115 -> 0.610384: 1.3534x faster
Avg: 0.872314 -> 0.627799: 1.3895x faster
Significant (t=43.041072)
Stddev: 0.03384 -> 0.02165: 1.5626x smaller
Timeline: http://tinyurl.com/y4dr42c

### slowspitfire ###
Min: 0.820168 -> 0.697804: 1.1754x faster
Avg: 0.840062 -> 0.736274: 1.1410x faster
Significant (t=20.687150)
Stddev: 0.02540 -> 0.02477: 1.0256x smaller
Timeline: http://tinyurl.com/y6cn2c7

### slowunpickle ###
Min: 0.423866 -> 0.306436: 1.3832x faster
Avg: 0.431624 -> 0.308273: 1.4001x faster
Significant (t=103.485543)
Stddev: 0.00781 -> 0.00318: 2.4556x smaller
Timeline: http://tinyurl.com/y7p5ugb

### startup_nosite ###
Min: 0.182274 -> 0.166099: 1.0974x faster
Avg: 0.201290 -> 0.185015: 1.0880x faster
Significant (t=8.405736)
Stddev: 0.01255 -> 0.01474: 1.1748x larger
Timeline: http://tinyurl.com/y26jqjm

### threaded_count ###
Min: 0.292005 -> 0.174754: 1.6710x faster
Avg: 0.345331 -> 0.191805: 1.8004x faster
Significant (t=48.856578)
Stddev: 0.02041 -> 0.00877: 2.3267x smaller
Timeline: http://tinyurl.com/y6dl2e6

### unpack_sequence ###
Min: 0.000106 -> 0.000091: 1.1684x faster
Avg: 0.000114 -> 0.000099: 1.1433x faster
Significant (t=21.367174)
Stddev: 0.00009 -> 0.00012: 1.2958x larger
Timeline: http://tinyurl.com/y2sujno

### unpickle ###
Min: 0.908351 -> 0.803020: 1.1312x faster
Avg: 0.984448 -> 0.856525: 1.1494x faster
Significant (t=19.812585)
Stddev: 0.03248 -> 0.03209: 1.0122x smaller
Timeline: http://tinyurl.com/y4zmlaj

### unpickle_list ###
Min: 0.754476 -> 0.719254: 1.0490x faster
Avg: 0.802729 -> 0.759628: 1.0567x faster
Significant (t=6.699951)
Stddev: 0.03771 -> 0.02544: 1.4821x smaller
Timeline: http://tinyurl.com/y6tv2us

medicina
19-04-2010, 00:08
Il ramo 2.x di Python è praticamente morto: la 2.7 è già in beta, per cui non ci sono più margini per integrare i miei cambiamenti nella versione ufficiale. Inoltre questa sarà l'ultima versione di Python 2.x: non ne seguiranno altre perché per la comunità di sviluppatori il futuro di questo linguaggio è rappresentato dalla 3.x (e mi sembra anche giusto).
A parte che ci sarebbe solo da impazzire nel supportare due VM diverse. :D

Mi sono offerto di portare tutto su Python 3.x (penso a partire dalla 2), e continuare lì con altre ottimizzazioni (ne ho ancora decine in mente :D) creando un mio branch, e SEMBRA che non ci siano state opposizioni. Speriamo bene. :)

La nuova traversata promette bene almeno quanto quella già avvenuta.


Mi spieghi come hai creato quel file .hg solo per cambiare il flag x dei file? Così dovesse succedermi nuovamente posso provvedere io a crearlo e a eseguire l'aggiornamento.

Ho solo cambiato i permessi nei file dentro il repository, sembra che hg funzioni come git in questo, commit e via, poi ho impacchettato usando il comando bundle. Lo stesso (comandi Unix compresi), forse, si potrebbe fare via Cygwin, anche in quei casi in cui ci siano dei permessi limitati al mondo Unix. Però avrai fatto un errore a monte, quando i permessi sono andati via, non avendo evidentemente usato il VCS sin da subito.

Ti allego i benchmark fatti con la suite, questa volta ho usato come versione di Python la 2.6.4. Ho anche notato un crash eseguendo i test, sembra che in "Lib/ast.py" ci siano problemi di indentazione dovuti a dei tab, una volta sostituiti con i 4 spazi standard tutti i test sono riusciti (tranne quei due che mi falliscono anche con la versione normale).


Report on Linux raffaello 2.6.31.12-0.2-desktop #1 SMP PREEMPT 2010-03-16 21:25:39 +0100 i686 athlon
Total CPU cores: 1

### 2to3 ###
43.432397 -> 43.283420: 1.0034x faster

### bzr_startup ###
Min: 0.140979 -> 0.144978: 1.0284x slower
Avg: 0.159606 -> 0.157596: 1.0128x faster
Significant (t=2.709326)
Stddev: 0.00578 -> 0.00465: 1.2418x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.175973&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.175973&chd=t:0.16,0.16,0.16,0.16,0.16,0.16,0.15,0.18,0.16,0.16,0.17,0.17,0.17,0.16,0.16,0.17,0.16,0.16,0.16,0.15,0.16,0.16,0.16,0.16,0.16,0.16,0.17,0.15,0.16,0.16,0.15,0.16,0.16,0.15,0.16,0.16,0.16,0.16,0.16,0.17,0.16,0.15,0.16,0.16,0.16,0.16,0.15,0.16,0.15,0.16,0.16,0.16,0.17,0.16,0.16,0.16,0.16,0.15,0.16,0.16,0.15,0.16,0.17,0.16,0.15,0.15,0.14,0.16,0.16,0.16,0.16,0.17,0.16,0.15,0.16,0.16,0.17,0.16,0.16,0.16,0.15,0.15,0.17,0.16,0.16,0.16,0.15,0.15,0.16,0.14,0.15,0.17,0.16,0.15,0.16,0.16,0.15,0.16,0.15,0.15|0.16,0.15,0.15,0.15,0.16,0.15,0.16,0.16,0.16,0.15,0.15,0.15,0.16,0.15,0.16,0.15,0.16,0.15,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.17,0.15,0.15,0.16,0.16,0.16,0.15,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.15,0.16,0.16,0.15,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.17,0.16,0.16,0.16,0.16,0.16,0.16,0.15,0.16,0.16,0.15,0.15,0.15,0.16,0.16,0.15,0.15,0.16,0.16,0.15,0.15,0.14,0.16,0.17,0.16,0.15,0.15,0.16,0.16,0.16,0.16,0.15,0.16,0.16,0.16,0.15,0.15,0.16,0.16,0.16,0.16,0.15,0.15,0.15,0.16,0.16,0.16,0.16,0.17&chxl=0:|1|20|40|60|80|100|2:||Iteration|3:||Time+(secs)&chtt=bzr_startup

### call_method ###
Min: 1.158909 -> 1.059187: 1.0941x faster
Avg: 1.161172 -> 1.113055: 1.0432x faster
Significant (t=22.522125)
Stddev: 0.00131 -> 0.02613: 19.9944x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.07623100281,2.1763420105&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.07623100281,2.1763420105&chd=t:1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.17,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.17,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16,1.16|1.13,1.16,1.13,1.11,1.11,1.14,1.16,1.08,1.1,1.14,1.14,1.14,1.1,1.13,1.15,1.15,1.13,1.14,1.17,1.11,1.1,1.11,1.14,1.11,1.13,1.11,1.14,1.11,1.11,1.15,1.13,1.18,1.16,1.1,1.1,1.1,1.12,1.08,1.11,1.09,1.09,1.09,1.12,1.16,1.08,1.1,1.08,1.12,1.13,1.15,1.14,1.16,1.13,1.14,1.16,1.09,1.14,1.15,1.13,1.11,1.1,1.09,1.1,1.1,1.11,1.11,1.11,1.14,1.15,1.12,1.13,1.14,1.16,1.14,1.09&chxl=0:|1|15|30|45|60|75|2:||Iteration|3:||Time+(secs)&chtt=call_method

### call_method_slots ###
Min: 1.149059 -> 1.078626: 1.0653x faster
Avg: 1.151797 -> 1.143283: 1.0074x faster
Significant (t=3.330294)
Stddev: 0.00124 -> 0.03128: 25.1750x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.09424901009,2.22079586983&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.09424901009,2.22079586983&chd=t:1.15,1.16,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.16,1.16,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15,1.15|1.16,1.13,1.2,1.16,1.16,1.15,1.17,1.13,1.14,1.13,1.16,1.19,1.13,1.17,1.17,1.14,1.11,1.14,1.19,1.2,1.17,1.22,1.2,1.14,1.14,1.15,1.21,1.16,1.19,1.1,1.15,1.13,1.15,1.13,1.09,1.18,1.18,1.14,1.13,1.13,1.12,1.15,1.18,1.17,1.19,1.21,1.19,1.19,1.22,1.18,1.18,1.17,1.16,1.16,1.18,1.18,1.16,1.16,1.16,1.16,1.17,1.16,1.14,1.13,1.12,1.14,1.15,1.19,1.14,1.15,1.15,1.15,1.15,1.13,1.1&chxl=0:|1|15|30|45|60|75|2:||Iteration|3:||Time+(secs)&chtt=call_method_slots

### call_method_unknown ###
Min: 1.170848 -> 1.155544: 1.0132x faster
Avg: 1.180379 -> 1.201501: 1.0179x slower
Significant (t=-9.479015)
Stddev: 0.01125 -> 0.02487: 2.2110x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.17149400711,2.26189613342&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.17149400711,2.26189613342&chd=t:1.19,1.2,1.21,1.19,1.2,1.2,1.18,1.17,1.18,1.17,1.17,1.19,1.21,1.2,1.17,1.17,1.17,1.17,1.19,1.19,1.17,1.18,1.17,1.18,1.17,1.2,1.17,1.22,1.2,1.19,1.2,1.19,1.2,1.19,1.19,1.21,1.2,1.19,1.2,1.2,1.19,1.19,1.19,1.19,1.19,1.2,1.21,1.19,1.17,1.19,1.18,1.17,1.19,1.17,1.17,1.19,1.17,1.18,1.17,1.17,1.17,1.17,1.18,1.17,1.19,1.17,1.18,1.18,1.17,1.18,1.17,1.17,1.17,1.19,1.2|1.26,1.24,1.21,1.2,1.22,1.23,1.22,1.21,1.22,1.24,1.23,1.2,1.21,1.25,1.23,1.2,1.19,1.19,1.2,1.19,1.2,1.24,1.2,1.19,1.2,1.21,1.24,1.22,1.24,1.19,1.18,1.2,1.21,1.18,1.2,1.21,1.2,1.17,1.19,1.19,1.22,1.2,1.2,1.19,1.2,1.2,1.18,1.2,1.23,1.24,1.25,1.23,1.21,1.19,1.2,1.24,1.24,1.21,1.23,1.24,1.23,1.24,1.18,1.2,1.19,1.21,1.23,1.24,1.25,1.24,1.23,1.24,1.23,1.2,1.2&chxl=0:|1|15|30|45|60|75|2:||Iteration|3:||Time+(secs)&chtt=call_method_unknown

### call_simple ###
Min: 0.905800 -> 0.908177: 1.0026x slower
Avg: 0.911217 -> 0.942381: 1.0342x slower
Significant (t=-18.575059)
Stddev: 0.00579 -> 0.01972: 3.4054x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.98918581009&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.98918581009&chd=t:0.91,0.91,0.92,0.91,0.92,0.91,0.91,0.91,0.91,0.92,0.92,0.92,0.91,0.93,0.91,0.91,0.91,0.92,0.92,0.91,0.91,0.91,0.91,0.91,0.91,0.91,0.93,0.91,0.92,0.93,0.92,0.91,0.92,0.91,0.91,0.91,0.91,0.91,0.91,0.91,0.91,0.91,0.91,0.92,0.93,0.91,0.93,0.91,0.91,0.91,0.91,0.91,0.91,0.91,0.92,0.92,0.91,0.93,0.92,0.91,0.91,0.91,0.91,0.91,0.91,0.92,0.93,0.93,0.93,0.91,0.91,0.91,0.91,0.91,0.91|0.99,0.95,0.93,0.95,0.95,0.94,0.94,0.96,0.93,0.97,0.96,0.95,0.97,0.94,0.96,0.95,0.95,0.94,0.97,0.96,0.94,0.96,0.98,0.93,0.94,0.96,0.97,0.94,0.97,0.97,0.95,0.95,0.94,0.96,0.96,0.93,0.92,0.95,0.96,0.97,0.92,0.95,0.96,0.94,0.91,0.96,0.97,0.95,0.94,0.95,0.92,0.95,0.95,0.97,0.93,0.94,0.95,0.96,0.97,0.94,0.96,0.96,0.95,0.94,0.99,0.99,0.97,0.94,0.97,0.97,0.96,0.95,0.96,0.98,0.95&chxl=0:|1|15|30|45|60|75|2:||Iteration|3:||Time+(secs)&chtt=call_simple

### float ###
Min: 0.222201 -> 0.224009: 1.0081x slower
Avg: 0.232227 -> 0.239783: 1.0325x slower
Significant (t=-9.550820)
Stddev: 0.00855 -> 0.00913: 1.0688x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.26341700554&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.26341700554&chd=t:0.24,0.24,0.25,0.25,0.24,0.24,0.25,0.24,0.25,0.24,0.24,0.24,0.24,0.23,0.25,0.24,0.25,0.23,0.25,0.23,0.24,0.25,0.24,0.23,0.24,0.25,0.25,0.25,0.24,0.25,0.24,0.24,0.23,0.25,0.24,0.25,0.23,0.25,0.24,0.24,0.25,0.25,0.23,0.24,0.24,0.24,0.25,0.24,0.24,0.24,0.25,0.23,0.25,0.24,0.24,0.23,0.25,0.23,0.24,0.25,0.24,0.23,0.24,0.24,0.24,0.25,0.24,0.25,0.24,0.25,0.24,0.25,0.24,0.25,0.23,0.25,0.24,0.25,0.25,0.25,0.23,0.24,0.25,0.24|0.25,0.25,0.26,0.26,0.24,0.25,0.26,0.25,0.26,0.25,0.25,0.25,0.25,0.24,0.26,0.25,0.25,0.24,0.25,0.24,0.25,0.26,0.25,0.24,0.25,0.25,0.26,0.26,0.25,0.25,0.25,0.26,0.24,0.26,0.25,0.25,0.25,0.26,0.25,0.26,0.26,0.25,0.23,0.24,0.25,0.24,0.25,0.24,0.25,0.24,0.24,0.23,0.25,0.24,0.26,0.24,0.25,0.25,0.25,0.25,0.25,0.23,0.25,0.25,0.24,0.25,0.25,0.25,0.25,0.26,0.24,0.26,0.25,0.25,0.24,0.26,0.24,0.25,0.26,0.25,0.24,0.25,0.25,0.25&chxl=0:|1|17|34|51|68|84|2:||Iteration|3:||Time+(secs)&chtt=float

### hg_startup ###
Min: 0.045993 -> 0.048992: 1.0652x slower
Avg: 0.057321 -> 0.056441: 1.0156x faster
Significant (t=4.488042)
Stddev: 0.00319 -> 0.00301: 1.0620x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.06599&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.06599&chd=t:0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06|0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.07,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.05,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06&chxl=0:|1|20|40|60|80|100|2:||Iteration|3:||Time+(secs)&chtt=hg_startup

### html5lib ###
Min: 26.507970 -> 25.616106: 1.0348x faster
Avg: 26.597557 -> 25.732688: 1.0336x faster
Significant (t=9.827764)
Stddev: 0.09216 -> 0.17386: 1.8865x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,24.616106,27.70594&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=24.616106,27.70594&chd=t:26.51,26.71,26.54,26.69,26.55|25.68,25.62,25.68,26.04,25.65&chxl=0:|1|2|3|4|5|2:||Iteration|3:||Time+(secs)&chtt=html5lib

### html5lib_warmup ###
Min: 25.655162 -> 25.466228: 1.0074x faster
Avg: 26.110781 -> 25.898441: 1.0082x faster
Not significant
Stddev: 0.26144 -> 0.25576: 1.0222x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,24.4662280083,27.2955319881&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=24.4662280083,27.2955319881&chd=t:25.66,26.3,26.27,26.18,26.16|25.47,26.04,26.12,25.89,25.97&chxl=0:|1|2|3|4|5|2:||Iteration|3:||Time+(secs)&chtt=html5lib_warmup

### iterative_count ###
Min: 0.369361 -> 0.223053: 1.6559x faster
Avg: 0.371506 -> 0.240774: 1.5430x faster
Significant (t=72.130793)
Stddev: 0.00198 -> 0.01266: 6.3935x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.38339400291&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.38339400291&chd=t:0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.38,0.37|0.25,0.25,0.23,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.23,0.22,0.23,0.23,0.23,0.23,0.24,0.25,0.25,0.25,0.24,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.24,0.25,0.25,0.25,0.24,0.25,0.25,0.25,0.24,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.24,0.25&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=iterative_count

### nbody ###
Min: 0.935157 -> 0.931795: 1.0036x faster
Avg: 0.946445 -> 0.943684: 1.0029x faster
Significant (t=2.384189)
Stddev: 0.00409 -> 0.00709: 1.7332x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.95390200615&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.95390200615&chd=t:0.94,0.95,0.94,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.94,0.95,0.94,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.94,0.95,0.95,0.95,0.95,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.95,0.94,0.95,0.94,0.95,0.95,0.95,0.95|0.94,0.93,0.94,0.95,0.94,0.95,0.94,0.93,0.93,0.94,0.95,0.93,0.94,0.94,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.94,0.94,0.93,0.93,0.95,0.94,0.93,0.94,0.94,0.94,0.95,0.95,0.95,0.94,0.94,0.95,0.93,0.94,0.94,0.95,0.95,0.95,0.93,0.95,0.95,0.94,0.95,0.94&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=nbody

### normal_startup ###
Min: 0.685616 -> 0.676500: 1.0135x faster
Avg: 0.686916 -> 0.678582: 1.0123x faster
Significant (t=31.273550)
Stddev: 0.00078 -> 0.00171: 2.1897x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.69004797935&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.69004797935&chd=t:0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69|0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68,0.68&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=normal_startup

### nqueens ###
Min: 0.980723 -> 0.947436: 1.0351x faster
Avg: 0.989169 -> 0.954421: 1.0364x faster
Significant (t=46.434070)
Stddev: 0.00394 -> 0.00353: 1.1181x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.99711680412&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.99711680412&chd=t:0.99,0.99,0.99,0.99,0.99,0.99,1.0,0.99,0.99,0.99,0.99,0.99,1.0,0.99,0.98,0.99,0.99,0.99,0.99,0.99,0.98,0.98,0.98,0.98,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.98,0.98,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.99,0.98,0.99,0.99,0.99|0.95,0.96,0.95,0.96,0.95,0.96,0.95,0.96,0.95,0.96,0.96,0.95,0.95,0.95,0.95,0.95,0.96,0.95,0.96,0.96,0.95,0.95,0.95,0.95,0.96,0.96,0.96,0.95,0.95,0.95,0.95,0.96,0.96,0.95,0.96,0.96,0.95,0.96,0.95,0.95,0.95,0.96,0.96,0.96,0.95,0.96,0.95,0.96,0.95,0.96&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=nqueens

### pickle ###
Min: 3.346728 -> 3.398232: 1.0154x slower
Avg: 3.367508 -> 3.415437: 1.0142x slower
Significant (t=-28.797501)
Stddev: 0.00840 -> 0.00824: 1.0186x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,2.34672808647,4.43019509315&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=2.34672808647,4.43019509315&chd=t:3.37,3.37,3.38,3.37,3.36,3.38,3.36,3.35,3.37,3.37,3.37,3.36,3.38,3.36,3.38,3.37,3.36,3.37,3.37,3.37,3.35,3.37,3.36,3.38,3.37,3.37,3.38,3.37,3.36,3.37,3.36,3.36,3.37,3.36,3.37,3.36,3.37,3.36,3.38,3.38,3.36,3.37,3.36,3.37,3.37,3.36,3.37,3.39,3.38,3.36|3.4,3.4,3.41,3.43,3.41,3.42,3.41,3.42,3.41,3.41,3.41,3.41,3.41,3.4,3.41,3.43,3.42,3.41,3.41,3.41,3.41,3.42,3.41,3.41,3.4,3.41,3.42,3.42,3.43,3.43,3.42,3.42,3.41,3.42,3.41,3.41,3.42,3.42,3.43,3.41,3.43,3.41,3.42,3.42,3.43,3.42,3.42,3.41,3.41,3.41&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=pickle

### pickle_dict ###
Min: 3.395274 -> 3.338732: 1.0169x faster
Avg: 3.513604 -> 3.359646: 1.0458x faster
Significant (t=16.225759)
Stddev: 0.06605 -> 0.01182: 5.5896x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,2.33873200417,4.60737299919&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=2.33873200417,4.60737299919&chd=t:3.49,3.56,3.59,3.57,3.51,3.46,3.59,3.55,3.4,3.52,3.49,3.59,3.57,3.43,3.55,3.6,3.5,3.43,3.43,3.56,3.42,3.44,3.52,3.53,3.6,3.6,3.41,3.46,3.4,3.46,3.4,3.54,3.57,3.54,3.55,3.6,3.58,3.48,3.48,3.42,3.6,3.57,3.4,3.61,3.5,3.51,3.45,3.54,3.54,3.57|3.36,3.35,3.34,3.36,3.38,3.37,3.36,3.35,3.35,3.35,3.36,3.36,3.34,3.36,3.37,3.36,3.36,3.35,3.38,3.34,3.36,3.37,3.39,3.38,3.35,3.36,3.35,3.35,3.36,3.36,3.36,3.34,3.37,3.36,3.38,3.37,3.38,3.35,3.35,3.36,3.36,3.38,3.37,3.34,3.35,3.35,3.35,3.36,3.35,3.36&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=pickle_dict

### pickle_list ###
Min: 1.720434 -> 1.708855: 1.0068x faster
Avg: 1.762757 -> 1.719942: 1.0249x faster
Significant (t=11.198322)
Stddev: 0.02604 -> 0.00727: 3.5808x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.70885491371,2.81176018715&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.70885491371,2.81176018715&chd=t:1.77,1.77,1.8,1.79,1.76,1.75,1.77,1.8,1.8,1.78,1.74,1.79,1.81,1.77,1.74,1.76,1.8,1.79,1.78,1.73,1.78,1.8,1.77,1.76,1.79,1.78,1.75,1.72,1.72,1.72,1.72,1.76,1.74,1.79,1.8,1.75,1.74,1.72,1.75,1.73,1.73,1.79,1.73,1.74,1.75,1.77,1.74,1.76,1.77,1.78|1.72,1.71,1.71,1.71,1.72,1.73,1.71,1.71,1.71,1.71,1.73,1.72,1.71,1.71,1.71,1.73,1.73,1.73,1.74,1.73,1.72,1.71,1.71,1.72,1.71,1.73,1.72,1.71,1.72,1.72,1.73,1.73,1.71,1.72,1.72,1.73,1.72,1.72,1.73,1.73,1.73,1.73,1.73,1.73,1.71,1.71,1.72,1.72,1.72,1.72&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=pickle_list

### pybench ###
Min: 8937 -> 8141: 1.0978x faster
Avg: 9069 -> 8266: 1.0971x faster

### regex_compile ###
Min: 1.297481 -> 1.230614: 1.0543x faster
Avg: 1.303290 -> 1.235283: 1.0551x faster
Significant (t=120.657667)
Stddev: 0.00304 -> 0.00257: 1.1834x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.23061418533,2.31539511681&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.23061418533,2.31539511681&chd=t:1.31,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.31,1.3,1.31,1.3,1.3,1.3,1.31,1.31,1.3,1.31,1.3,1.3,1.3,1.3,1.3,1.31,1.3,1.3,1.31,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.31,1.3,1.3,1.3,1.3,1.3,1.3,1.32|1.23,1.24,1.24,1.23,1.24,1.23,1.24,1.24,1.24,1.23,1.23,1.23,1.24,1.23,1.23,1.23,1.24,1.24,1.24,1.24,1.24,1.24,1.24,1.25,1.24,1.24,1.24,1.24,1.24,1.23,1.23,1.23,1.23,1.23,1.23,1.23,1.24,1.24,1.23,1.23,1.24,1.23,1.24,1.23,1.23,1.23,1.24,1.23,1.23,1.23&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=regex_compile

### regex_effbot ###
Min: 0.238711 -> 0.234200: 1.0193x faster
Avg: 0.239331 -> 0.236123: 1.0136x faster
Significant (t=19.737486)
Stddev: 0.00050 -> 0.00104: 2.0828x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.24141407013&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.24141407013&chd=t:0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24|0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=regex_effbot

### regex_v8 ###
Min: 0.229685 -> 0.217755: 1.0548x faster
Avg: 0.232979 -> 0.219208: 1.0628x faster
Significant (t=36.278688)
Stddev: 0.00217 -> 0.00157: 1.3824x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.23589801788&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.23589801788&chd=t:0.23,0.24,0.23,0.24,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.24,0.23,0.23,0.23,0.24,0.23,0.24,0.23,0.23,0.23,0.24,0.23,0.24,0.23,0.23,0.23,0.24,0.23,0.23,0.23,0.24,0.23,0.24,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.24,0.23,0.24|0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.23,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=regex_v8

### richards ###
Min: 0.543314 -> 0.504176: 1.0776x faster
Avg: 0.550139 -> 0.542886: 1.0134x faster
Significant (t=3.118548)
Stddev: 0.00397 -> 0.01596: 4.0203x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.57444500923&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.57444500923&chd=t:0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.56,0.55,0.56,0.55,0.55,0.54,0.54,0.55,0.55,0.55,0.54,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.56,0.56,0.56,0.56,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55|0.53,0.55,0.55,0.55,0.55,0.54,0.53,0.53,0.55,0.54,0.55,0.55,0.56,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.54,0.56,0.53,0.51,0.56,0.51,0.56,0.52,0.56,0.51,0.54,0.57,0.53,0.57,0.52,0.57,0.54,0.54,0.53,0.53,0.52,0.54,0.5&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=richards

### slowpickle ###
Min: 1.453602 -> 1.361336: 1.0678x faster
Avg: 1.459776 -> 1.370334: 1.0653x faster
Significant (t=102.747004)
Stddev: 0.00249 -> 0.00563: 2.2567x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.36133599281,2.46742391586&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.36133599281,2.46742391586&chd=t:1.46,1.46,1.46,1.46,1.46,1.45,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.45,1.47,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46,1.46|1.37,1.38,1.37,1.36,1.38,1.38,1.38,1.37,1.37,1.37,1.37,1.38,1.38,1.38,1.38,1.37,1.37,1.36,1.36,1.36,1.36,1.36,1.36,1.36,1.37,1.37,1.36,1.37,1.37,1.37,1.37,1.37,1.37,1.38,1.38,1.38,1.38,1.37,1.37,1.37,1.37,1.37,1.38,1.38,1.37,1.37,1.37,1.36,1.36,1.36&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=slowpickle

### slowspitfire ###
Min: 1.507587 -> 1.393345: 1.0820x faster
Avg: 1.512317 -> 1.405533: 1.0760x faster
Significant (t=83.955024)
Stddev: 0.00415 -> 0.00798: 1.9254x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.39334487915,2.53158593178&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.39334487915,2.53158593178&chd=t:1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.53,1.52,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.52,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.51,1.53,1.51,1.51,1.51,1.51,1.52,1.51,1.51,1.51,1.51|1.41,1.41,1.42,1.39,1.41,1.41,1.4,1.42,1.4,1.39,1.4,1.39,1.4,1.4,1.42,1.41,1.4,1.4,1.42,1.4,1.4,1.41,1.42,1.4,1.42,1.41,1.41,1.41,1.41,1.41,1.4,1.4,1.4,1.4,1.41,1.41,1.41,1.4,1.41,1.4,1.4,1.4,1.41,1.41,1.42,1.41,1.4,1.41,1.4,1.4&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=slowspitfire

### slowunpickle ###
Min: 0.692674 -> 0.645382: 1.0733x faster
Avg: 0.695322 -> 0.648033: 1.0730x faster
Significant (t=102.284826)
Stddev: 0.00177 -> 0.00275: 1.5551x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.70394492149&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.70394492149&chd=t:0.69,0.69,0.7,0.69,0.69,0.69,0.7,0.69,0.7,0.7,0.69,0.7,0.69,0.7,0.69,0.7,0.69,0.7,0.7,0.7,0.7,0.69,0.7,0.69,0.7,0.69,0.7,0.69,0.69,0.7,0.69,0.7,0.7,0.69,0.69,0.7,0.7,0.7,0.69,0.7,0.7,0.7,0.7,0.69,0.7,0.7,0.69,0.7,0.7,0.7|0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.66,0.65,0.65,0.65,0.65&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=slowunpickle

### startup_nosite ###
Min: 0.247376 -> 0.246369: 1.0041x faster
Avg: 0.249051 -> 0.248113: 1.0038x faster
Significant (t=6.716428)
Stddev: 0.00109 -> 0.00088: 1.2345x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.25523996353&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.25523996353&chd=t:0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.26,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25|0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25&chxl=0:|1|20|40|60|80|100|2:||Iteration|3:||Time+(secs)&chtt=startup_nosite

### threaded_count ###
Min: 0.373155 -> 0.227307: 1.6416x faster
Avg: 0.374912 -> 0.234906: 1.5960x faster
Significant (t=224.886947)
Stddev: 0.00110 -> 0.00426: 3.8673x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.37840795517&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.37840795517&chd=t:0.37,0.37,0.38,0.37,0.37,0.37,0.38,0.38,0.37,0.38,0.37,0.37,0.37,0.38,0.38,0.38,0.37,0.38,0.38,0.38,0.38,0.38,0.37,0.37,0.37,0.38,0.37,0.38,0.37,0.37,0.37,0.37,0.38,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.38,0.37,0.38,0.37,0.37,0.38,0.38,0.37,0.37|0.24,0.24,0.24,0.24,0.23,0.23,0.23,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.24,0.24,0.23,0.23,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.25,0.24,0.25,0.24,0.24,0.23,0.24,0.23&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=threaded_count

### unpack_sequence ###
Min: 0.000150 -> 0.000159: 1.0605x slower
Avg: 0.000153 -> 0.000161: 1.0550x slower
Significant (t=-450.521988)
Stddev: 0.00000 -> 0.00000: 1.2070x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0,1.00053215027&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0,1.00053215027&chd=t:0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0|0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0&chxl=0:|1|20|40|60|80|100|2:||Iteration|3:||Time+(secs)&chtt=unpack_sequence

### unpickle ###
Min: 2.042838 -> 2.023408: 1.0096x faster
Avg: 2.054084 -> 2.037836: 1.0080x faster
Significant (t=13.396235)
Stddev: 0.00551 -> 0.00657: 1.1931x larger
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,1.0234079361,3.0667848587&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=1.0234079361,3.0667848587&chd=t:2.06,2.06,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.06,2.06,2.06,2.06,2.05,2.06,2.06,2.06,2.06,2.05,2.04,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.04,2.04,2.05,2.06,2.06,2.06,2.06,2.06,2.06,2.06,2.07,2.06,2.06,2.06,2.05,2.06|2.04,2.04,2.04,2.04,2.04,2.02,2.04,2.03,2.02,2.04,2.04,2.04,2.03,2.03,2.04,2.04,2.04,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.05,2.03,2.03,2.03,2.03,2.03,2.03,2.03,2.04,2.03,2.03,2.04,2.04,2.04,2.04,2.04,2.04,2.04,2.04,2.04,2.04,2.04,2.03,2.03,2.03&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=unpickle

### unpickle_list ###
Min: 1.542357 -> 1.645569: 1.0669x slower
Avg: 1.554601 -> 1.654697: 1.0644x slower
Significant (t=-93.061602)
Stddev: 0.00647 -> 0.00400: 1.6147x smaller
Timeline: http://chart.apis.google.com/chart?cht=lc&chs=700x400&chxt=x,y,x,y&chxr=1,0.54235696793,2.66085600853&chco=FF0000,0000FF&chdl=/btrfs/src/Python-2.6.4/python|/btrfs/src/wpython2-wpython11/python&chds=0.54235696793,2.66085600853&chd=t:1.56,1.55,1.55,1.56,1.55,1.56,1.56,1.56,1.56,1.55,1.55,1.54,1.56,1.55,1.55,1.54,1.55,1.55,1.55,1.54,1.54,1.55,1.55,1.54,1.55,1.54,1.55,1.55,1.56,1.55,1.55,1.55,1.56,1.55,1.56,1.56,1.56,1.56,1.56,1.56,1.56,1.56,1.56,1.57,1.56,1.56,1.56,1.56,1.57,1.56|1.66,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.65,1.66,1.66,1.65,1.66,1.66,1.65,1.66,1.66,1.66,1.66,1.66,1.66,1.65,1.66,1.65,1.66,1.66,1.66,1.66,1.66,1.65,1.66,1.66,1.65,1.66,1.66,1.66,1.66,1.66,1.65,1.66&chxl=0:|1|10|20|30|40|50|2:||Iteration|3:||Time+(secs)&chtt=unpickle_list

^TiGeRShArK^
19-04-2010, 00:22
io purtroppo ho paura a fare il bench perchè ho python tanto infognato con tante di quelle versioni diverse che l'unico modo che ho per fare partire IDLE è lanciarlo da linea di comando passandogli non mi ricordo quale parametro strano. :asd:
Quindi mi sa che per stavolta passo... :stordita:

cionci
19-04-2010, 00:29
io purtroppo ho paura a fare il bench perchè ho python tanto infognato con tante di quelle versioni diverse che l'unico modo che ho per fare partire IDLE è lanciarlo da linea di comando passandogli non mi ricordo quale parametro strano. :asd:
Quindi mi sa che per stavolta passo... :stordita:
Ricompila una versione 2.6.4 vanilla e usa quella ;) Anche Cesare ha fatto così se vedi la riga per far partire il test.

^TiGeRShArK^
19-04-2010, 00:32
Non sono la stessa versione di python ma te li lascio lo stesso. Il primo è quello di default che c'è su snow leopard 2.6.1. Il secondo è il tuo.

Che programma devo usare per decomprimere i .7z su mac che ho la VM sull'hard disk esterno e mi rompo andarlo a prendere ora? :D

cionci
19-04-2010, 00:35
Che programma devo usare per decomprimere i .7z su mac che ho la VM sull'hard disk esterno e mi rompo andarlo a prendere ora? :D
http://www.7-zip.org/download.html

^TiGeRShArK^
19-04-2010, 00:37
http://www.7-zip.org/download.html

tnx non sapevo ci fosse la versione x mac direttamente nel sito di 7zip, erano eoni che non lo scaricavo :p

^TiGeRShArK^
19-04-2010, 01:01
dopo aver corretto i vari permessi mi sto beccando quest'errore nel make:

Failed to find the necessary bits to build these modules:
bsddb185 dl gdbm
imageop linuxaudiodev ossaudiodev
readline spwd sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

E dentro quel file ci sono i vari noddy*.c.....
..c'aggià 'fà? :D

VICIUS
19-04-2010, 01:10
dopo aver corretto i vari permessi mi sto beccando quest'errore nel make:

Failed to find the necessary bits to build these modules:
bsddb185 dl gdbm
imageop linuxaudiodev ossaudiodev
readline spwd sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

E dentro quel file ci sono i vari noddy*.c.....
..c'aggià 'fà? :D

Ignora il messaggio di errore. Il binario è nella cartella e si chiama, giuro, python.exe.

^TiGeRShArK^
19-04-2010, 08:59
ovviamente mi ero dimenticato di postare poi il risultato. :p
Fico comunque il python.exe :asd:

unknown-00-1e-c2-bc-ea-b3:Python-2.6.4 danilo$ ./python.exe ../unladen-swallow/perf.py -b all,-django,-spambayes,-spitfire,-rietveld ./python.exe ../wpython11/python.exe

Report on Darwin unknown-00-1e-c2-bc-ea-b3.config 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26 11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386 i386
Total CPU cores: 2

### 2to3 ###
25.590659 -> 23.666681: 1.0813x faster

### bzr_startup ###
Min: 0.102069 -> 0.099751: 1.0232x faster
Avg: 0.102827 -> 0.100411: 1.0241x faster
Significant (t=20.360035)
Stddev: 0.00072 -> 0.00094: 1.3152x larger
Timeline: http://tinyurl.com/y6yjv5w

### call_method ###
Min: 0.606348 -> 0.548343: 1.1058x faster
Avg: 0.609875 -> 0.556685: 1.0955x faster
Significant (t=54.742949)
Stddev: 0.00303 -> 0.01151: 3.7924x larger
Timeline: http://tinyurl.com/y7wkkmp

### call_method_slots ###
Min: 0.641415 -> 0.549939: 1.1663x faster
Avg: 0.648512 -> 0.571999: 1.1338x faster
Significant (t=66.043832)
Stddev: 0.01162 -> 0.00815: 1.4253x smaller
Timeline: http://tinyurl.com/y7mlu86

### call_method_unknown ###
Min: 0.675142 -> 0.613596: 1.1003x faster
Avg: 0.685377 -> 0.616531: 1.1117x faster
Significant (t=35.991776)
Stddev: 0.02328 -> 0.00260: 8.9669x smaller
Timeline: http://tinyurl.com/y6p65wk

### call_simple ###
Min: 0.443526 -> 0.425943: 1.0413x faster
Avg: 0.447255 -> 0.442844: 1.0100x faster
Significant (t=4.469438)
Stddev: 0.00569 -> 0.01066: 1.8738x larger
Timeline: http://tinyurl.com/y8xbq2f

### float ###
Min: 0.102775 -> 0.096776: 1.0620x faster
Avg: 0.110484 -> 0.102809: 1.0747x faster
Significant (t=13.220150)
Stddev: 0.00738 -> 0.00546: 1.3507x smaller
Timeline: http://tinyurl.com/yyhutwh

### hg_startup ###
Min: 0.045108 -> 0.043234: 1.0433x faster
Avg: 0.046845 -> 0.043972: 1.0653x faster
Significant (t=28.354118)
Stddev: 0.00206 -> 0.00095: 2.1622x smaller
Timeline: http://tinyurl.com/y5b9xx5

### html5lib ###
Min: 15.549443 -> 14.847499: 1.0473x faster
Avg: 15.582542 -> 14.859007: 1.0487x faster
Significant (t=64.534012)
Stddev: 0.02167 -> 0.01261: 1.7190x smaller
Timeline: http://tinyurl.com/y3g6t44

### html5lib_warmup ###
Min: 15.770884 -> 15.074864: 1.0462x faster
Avg: 16.133120 -> 15.319287: 1.0531x faster
Significant (t=4.375747)
Stddev: 0.30506 -> 0.28266: 1.0793x smaller
Timeline: http://tinyurl.com/y2xcn3m

### iterative_count ###
Min: 0.147178 -> 0.085756: 1.7162x faster
Avg: 0.151184 -> 0.088620: 1.7060x faster
Significant (t=49.925293)
Stddev: 0.00651 -> 0.00601: 1.0834x smaller
Timeline: http://tinyurl.com/yybv496

### nbody ###
Min: 0.471700 -> 0.463253: 1.0182x faster
Avg: 0.483086 -> 0.475017: 1.0170x faster
Significant (t=3.488633)
Stddev: 0.01129 -> 0.01183: 1.0477x larger
Timeline: http://tinyurl.com/y6lrfst

### normal_startup ###
Min: 0.811946 -> 0.789491: 1.0284x faster
Avg: 0.854893 -> 0.819687: 1.0430x faster
Significant (t=5.095698)
Stddev: 0.03899 -> 0.02943: 1.3249x smaller
Timeline: http://tinyurl.com/yydc2u4

### nqueens ###
Min: 0.597376 -> 0.570333: 1.0474x faster
Avg: 0.606725 -> 0.588271: 1.0314x faster
Significant (t=5.653285)
Stddev: 0.00920 -> 0.02117: 2.3015x larger
Timeline: http://tinyurl.com/y3n2fg3

### pickle ###
Min: 1.651874 -> 1.574163: 1.0494x faster
Avg: 1.680315 -> 1.612453: 1.0421x faster
Significant (t=10.340275)
Stddev: 0.02313 -> 0.04023: 1.7395x larger
Timeline: http://tinyurl.com/y7r55ms

### pickle_dict ###
Min: 1.308464 -> 1.275010: 1.0262x faster
Avg: 1.318127 -> 1.296507: 1.0167x faster
Significant (t=4.484688)
Stddev: 0.00605 -> 0.03355: 5.5471x larger
Timeline: http://tinyurl.com/y4j9v5q

### pickle_list ###
Min: 0.743117 -> 0.803173: 1.0808x slower
Avg: 0.751905 -> 0.810111: 1.0774x slower
Significant (t=-44.249464)
Stddev: 0.00663 -> 0.00652: 1.0172x smaller
Timeline: http://tinyurl.com/y633yb6

### pybench ###
Min: 4763 -> 4342: 1.0970x faster
Avg: 4988 -> 4463: 1.1176x faster

### regex_compile ###
Min: 0.740278 -> 0.661458: 1.1192x faster
Avg: 0.764527 -> 0.685639: 1.1151x faster
Significant (t=15.011621)
Stddev: 0.02380 -> 0.02854: 1.1995x larger
Timeline: http://tinyurl.com/y524doe

### regex_effbot ###
Min: 0.096349 -> 0.096083: 1.0028x faster
Avg: 0.100523 -> 0.099285: 1.0125x faster
Not significant
Stddev: 0.00504 -> 0.00327: 1.5444x smaller
Timeline: http://tinyurl.com/y3e6z2j

### regex_v8 ###
Min: 0.107875 -> 0.104745: 1.0299x faster
Avg: 0.114243 -> 0.109286: 1.0454x faster
Significant (t=2.325803)
Stddev: 0.01377 -> 0.00612: 2.2522x smaller
Timeline: http://tinyurl.com/y4qvh3d

### richards ###
Min: 0.329455 -> 0.286851: 1.1485x faster
Avg: 0.340571 -> 0.298913: 1.1394x faster
Significant (t=13.324069)
Stddev: 0.01252 -> 0.01822: 1.4556x larger
Timeline: http://tinyurl.com/y3d8zxk

### slowpickle ###
Min: 0.717864 -> 0.646023: 1.1112x faster
Avg: 0.748511 -> 0.659941: 1.1342x faster
Significant (t=17.041455)
Stddev: 0.03039 -> 0.02067: 1.4701x smaller
Timeline: http://tinyurl.com/y5ht5y5

### slowspitfire ###
Min: 0.797233 -> 0.762146: 1.0460x faster
Avg: 0.839011 -> 0.812074: 1.0332x faster
Significant (t=4.203713)
Stddev: 0.02803 -> 0.03560: 1.2699x larger
Timeline: http://tinyurl.com/y7owc3g

### slowunpickle ###
Min: 0.320963 -> 0.289625: 1.1082x faster
Avg: 0.325532 -> 0.293422: 1.1094x faster
Significant (t=17.014061)
Stddev: 0.00791 -> 0.01075: 1.3598x larger
Timeline: http://tinyurl.com/y5dcwdj

### startup_nosite ###
Min: 0.210807 -> 0.219255: 1.0401x slower
Avg: 0.222933 -> 0.232971: 1.0450x slower
Significant (t=-4.776980)
Stddev: 0.01592 -> 0.01372: 1.1601x smaller
Timeline: http://tinyurl.com/y2cexr7

### threaded_count ###
Min: 0.195203 -> 0.113455: 1.7205x faster
Avg: 0.225064 -> 0.176248: 1.2770x faster
Significant (t=12.769360)
Stddev: 0.00850 -> 0.02566: 3.0192x larger
Timeline: http://tinyurl.com/y74c4w3

### unpack_sequence ###
Min: 0.000092 -> 0.000083: 1.1095x faster
Avg: 0.000094 -> 0.000085: 1.1058x faster
Significant (t=61.506288)
Stddev: 0.00002 -> 0.00002: 1.1541x smaller
Timeline: http://tinyurl.com/yykzcrg

### unpickle ###
Min: 1.026543 -> 1.018970: 1.0074x faster
Avg: 1.048295 -> 1.042098: 1.0059x faster
Not significant
Stddev: 0.01646 -> 0.03854: 2.3408x larger
Timeline: http://tinyurl.com/y786tft

### unpickle_list ###
Min: 0.908621 -> 0.905129: 1.0039x faster
Avg: 0.926660 -> 0.928462: 1.0019x slower
Not significant
Stddev: 0.01631 -> 0.01509: 1.0806x smaller
Timeline: http://tinyurl.com/y5m6s3u

cdimauro
19-04-2010, 11:26
Ho solo cambiato i permessi nei file dentro il repository, sembra che hg funzioni come git in questo, commit e via, poi ho impacchettato usando il comando bundle. Lo stesso (comandi Unix compresi), forse, si potrebbe fare via Cygwin, anche in quei casi in cui ci siano dei permessi limitati al mondo Unix. Però avrai fatto un errore a monte, quando i permessi sono andati via, non avendo evidentemente usato il VCS sin da subito.
E' l'errore che ho commesso io. Siccome su Windows non c'è il concetto di flag per i permessi come sulle macchine Unix, ho lavorato tranquillamente non pensandoci proprio, ma poi sono arrivate le lamentele perché quei due file non erano eseguibili.

A questo punto mi sa che dovrò usare cygwin, perché non ho trovato altro modo per settare quel flag. Ma è molto strano che Mercurial non proveda questa possibilità, visto che si pone come strumento multipiattaforma.
Ti allego i benchmark fatti con la suite, questa volta ho usato come versione di Python la 2.6.4. Ho anche notato un crash eseguendo i test, sembra che in "Lib/ast.py" ci siano problemi di indentazione dovuti a dei tab, una volta sostituiti con i 4 spazi standard tutti i test sono riusciti (tranne quei due che mi falliscono anche con la versione normale).
OK, me lo segno e lo ricontrollo. Grazie.
ovviamente mi ero dimenticato di postare poi il risultato. :p
Programmatori: gente con la testa fra le nuvole. :asd:
Fico comunque il python :asd:
Fixed. :O :p

Comunque nei benchmark tuoi e di "medicina" ho trovato un pattern comune: se i risultati nei test call_* non sono elevati, in generale non sono rilevabili miglioramenti "di spessore", e qualche volta capita che in qualche altro test wpython sia addirittura più lento (anche se sempre di poco) rispetto al ramo ufficiale.

E' molto strano questo comportamento, e onestamente non me lo spiego. Un risultato simile è stato ottenuto utilizzando una macchina virtuale. Boh.

P.S. Ovviamente ringrazio sempre tutti per i risultati. :)

Z80Fan
14-05-2010, 15:51
Ho visto solo ora questo thread e, anche se non conosco il python, volevo farti i complimenti per il progetto e per la buona idea che hai avuto!

banryu79
18-05-2010, 23:09
@cdimauro: quando (se) e dove saranno disponibili le slide del talk che hai tenuto quest'anno?
Dopo aver scaricato e studiato quelle dell'anno scorso, e seguito con molto interesse dal vivo il talk che hai tenuto quest'anno (complimenti per l'esposizione cristallina, per l'interessante argomento e per la mole di lavoro necessaria) ero curioso di "affiancare" alla situazione precedente le nuove ottimizzazioni introdotte...

@EDIT:

Qui (http://code.google.com/p/wpython2/downloads/list)trovi tutto.

many thanks :)

DanieleC88
18-05-2010, 23:19
Non si hanno testimonianze audio/video? :(

cdimauro
19-05-2010, 08:27
@cdimauro: quando (se) e dove saranno disponibili le slide del talk che hai tenuto quest'anno?
Dopo aver scaricato e studiato quelle dell'anno scorso, e seguito con molto interesse dal vivo il talk che hai tenuto quest'anno (complimenti per l'esposizione cristallina, per l'interessante argomento e per la mole di lavoro necessaria) ero curioso di "affiancare" alla situazione precedente le nuove ottimizzazioni introdotte...
Qui (http://code.google.com/p/wpython2/downloads/list) trovi tutto.
Non si hanno testimonianze audio/video? :(
Aspetto ancora che mettano online quelle dello scorso anno. :stordita:

mone.java
13-03-2014, 14:28
Non mi sono letto tutto il thread... E mi ricordo che @cdmauro aveva accennato qualcosa a riguardo poco tempo fa ma non ricordo cosa.

Quello che vorrei sapere da @cdmauro o chiunque altro: questa innovazione è stata poi introdotta nel ramo principale?

cdimauro
13-03-2014, 23:00
Io non l'ho fatto, e non mi risulta che qualcun altro si sia preso la briga, anche se c'è da dire che da quasi 2 anni non seguo più la mailing list ufficiale degli sviluppatori di Python, causa mancanza cronica di tempo.