Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Alessandro Ronchi
Il 23 gennaio 2009 0.47, Pietro Battiston  ha scritto:

> - o tra le righe della tua mail avrei dovuto anche leggere "così come il
> python rende efficiente la programmazione anche se perdi in efficienza a
> basso livello, Ubuntu ti fa perdere qualcosina in ottimizzazione ma la
> sua semplicità ti permette di dedicarti a ciò che nella tua vita ha più
> valore", che è un punto di vista interessante (l'ho sposato ormai da
> tempo) ma forse leggermente off-topic

No, non intendevo questo. Per fare un paragone con Ubuntu, volevo dire
che Ubuntu magari sarà meno veloce di Gentoo, ma con Gentoo a volte
per errore si compiono errori che fanno perdere velocità, quindi non è
detto che sia SEMPRE più veloce (pensa ad una ottimizzazione
sbagliata). Se come obiettivo hai "devo scrivere una lettera con
Openoffice", la velocità del programma è solo una parte del problema,
tutto qui.

> - o la domanda "ma compilando il python ottimizzato per la mia macchina,
> che migliorie posso aspettarmi?" _non_ è peregrina, e _non_ le è stata
> data risposta.

Non so darti risposta, tranne che la differenza tra una ottimizzazione
per i686 standard ed una precisa per il tuo processore dubito che sia
molto visibile. Diverso è se ricompili tutto, dal kernel
all'interprete.
Non ho mai provato con il python, ma ricompilando il kernel (che è
ancora più vitale, per le performance) la differenza non si vede
rispetto a quello generico per 686.

-- 
Alessandro Ronchi
Skype: aronchi
http://www.alessandroronchi.net

SOASI Soc.Coop. - www.soasi.com
Sviluppo Software e Sistemi Open Source
Sede: Via Poggiali 2/bis, 47100 Forlì (FC)
Tel.: +39 0543 798985 - Fax: +39 0543 579928

Rispetta l'ambiente: se non ti è necessario, non stampare questa mail
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Pietro Battiston
Il giorno gio, 22/01/2009 alle 23.27 +0100, Alessandro Ronchi ha
scritto:
> 2009/1/22 Pietro Battiston :
> 
> > O intendi solo che è meno efficiente nei calcoli (ad esempio del C)? E
> > questo ha qualche relazione con il fatto che sia o meno ottimizzabile?
> 
> L'efficienza è una bella sfida.
> Se per efficienza intendi il numero di operazioni che riesce a fare in
> un determinato tempo,

Beh, sì, per "efficienza nei calcoli" intendevo, con linguaggio un po'
cialtrone, proprio questo.


> [...]
> 
> In realtà l'efficienza dipende da tanti fattori, e visto che i
> programmatori sono persone umane più un sistema è pulito meno errori
> di programmazione si fanno, e più è facile concentrarsi sulle cose
> veramente importanti.

Sì, sì, concordo con ciò e con il resto della tua mail.

Però i casi sono due:
- o tra le righe della tua mail avrei dovuto anche leggere "così come il
python rende efficiente la programmazione anche se perdi in efficienza a
basso livello, Ubuntu ti fa perdere qualcosina in ottimizzazione ma la
sua semplicità ti permette di dedicarti a ciò che nella tua vita ha più
valore", che è un punto di vista interessante (l'ho sposato ormai da
tempo) ma forse leggermente off-topic
- o la domanda "ma compilando il python ottimizzato per la mia macchina,
che migliorie posso aspettarmi?" _non_ è peregrina, e _non_ le è stata
data risposta.

(il fatto che il python ci piaccia in questa lista lo davo per
scontato!)

ciao

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Alessandro Ronchi
2009/1/22 Pietro Battiston :

> O intendi solo che è meno efficiente nei calcoli (ad esempio del C)? E
> questo ha qualche relazione con il fatto che sia o meno ottimizzabile?

L'efficienza è una bella sfida.
Se per efficienza intendi il numero di operazioni che riesce a fare in
un determinato tempo, allora più il linguaggio è facile da utilizzare
per i programmatori meno efficiente risulta la sua esecuzione. Se
dovessimo fare una classifica, dal più efficiente a quello più
"pesante", sarebbe qualcosa del tipo:
Assembler -> C -> C++ -> Python

Ho semplificato molto.

In realtà l'efficienza dipende da tanti fattori, e visto che i
programmatori sono persone umane più un sistema è pulito meno errori
di programmazione si fanno, e più è facile concentrarsi sulle cose
veramente importanti.

Ritornando al discorso precedente, è meglio concentrarsi nel fare un
algoritmo che faccia meno cicli possibile, piuttosto che scrivere
tonnellate di righe solo per gestire una variabile e lo spazio che
occupa in memoria.

Molti programmatori costretti a concentrarsi su Malloc e puntatori
finivano poi per fare funzioni che venivano richiamate migliaia di
volte più dello stretto necessario, ed in questi casi per pareggiare
devi avere un linguaggio mille volte più veloce!

Questo aumenta con l'aumentare della complessità dei progetti: un
linguaggio pulito ti permetterà di organizzare meglio il codice e
questo si rifletterà anche sulle performance, perché meno lavoro deve
fare il programmatore per la gestione che sta attorno agli algoritmi
più lavoro potrà dedicare all'ottimizzazione delle parti importanti.

Inoltre i programmi oggi dipendono da tante cose, come ad esempio
l'accesso al Database, all'I/O, ecc.

Utilizzare delle funzioni di alto livello per la gestione dei tipi di
file specifici, ad esempio, ti permette di riutilizzare il codice più
efficiente (a meno che non si pensi di poterlo migliorare,
difficilmente si riesce a fare di meglio di quello che fanno le
librerie standard).

Se invece per efficienza intendiamo il tempo necessario per sviluppare
l'applicazione, allora il Python ha pochi rivali.
Basta confrontare gli "Hello World!"

Dai un'occhiata qui:
http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/

Il python con psyco è circa 10 volte più lento del codice in C++
scritto con il doppio delle righe.
praticamente tutti i linguaggi sono più complessi del python.

Finché il programma è di 40 righe la differenza di performance sarà
sempre a vantaggio dei linguaggi come il C++ che lavorano a più basso
livello, ma quando sono 10'000 o più, sono sicuro che la stessa
attenzione all'ottimizzazione viene meno e quindi il divario
diminuisce, a vantaggio del linguaggio che dimezza le linee di codice
e quindi anche il rischio di commettere errori.
-- 
Alessandro Ronchi
Skype: aronchi
http://www.alessandroronchi.net

SOASI Soc.Coop. - www.soasi.com
Sviluppo Software e Sistemi Open Source
Sede: Via Poggiali 2/bis, 47100 Forlì (FC)
Tel.: +39 0543 798985 - Fax: +39 0543 579928

Rispetta l'ambiente: se non ti è necessario, non stampare questa mail
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Pietro Battiston
Il giorno gio, 22/01/2009 alle 21.24 +0100, Y3s ha scritto:
> Il giorno 22/gen/09, alle ore 15:36, ugaciaka ha scritto:
> >
> >
> > Magari scrivere uno script che stressi il processore e vederne le
> > differenze fra python ricompilato e non.
> 
> Mi sembra un test davvero poco utile...python è notoriamente inadatto  
> per applicazioni cpu bound!
> Dubito che riuscirai a vedere differenze importanti...

Certamente sono io che non capisco, ma per "inadatto per applicazioni
cpu bound" intendi in parole povere che usa poche istruzioni del
processore? (e soprattutto: questo è notorio?!)

O intendi solo che è meno efficiente nei calcoli (ad esempio del C)? E
questo ha qualche relazione con il fatto che sia o meno ottimizzabile?

Mi sfugge qualcosa.

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Pietro Battiston
Il giorno gio, 22/01/2009 alle 18.00 +0100, Enrico Franchi ha scritto:
> On Jan 22, 2009, at 3:21 PM, Pietro Battiston wrote:
> 
> > - i .pyc non sono codice compilato;
> 
> Certo che lo sono. Il sorgente scritto in Python e' stato compilato.  
> Il risultato di questa compilazione e' precisamente il pyc.

Sì, certo, mi sono espresso male (ma mi illudo che colui a cui stavo
rispondendo abbia capito meglio la mia frase erronea della tua
spiegazione impeccabile, sbaglio?)

ciao

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Alessandro Ronchi
2009/1/22 Pietro Battiston :

> - compilare l'interprete python ottimizzato per una macchina
> probabilmente dà qualche vantaggio, anche se non mi aspetterei niente di
> stratosferico

Scusate, non avevo capito che si intendeva ricompilare solo
l'interprete. Non penso che porti a vantaggi significativi. Da molto
tempo ho smesso di compilare il kernel perché le ottimizzazioni non
introducevano differenze apprezzabili. Diverso sarebbe il caso in cui
applicazioni python venissero compilate, immagino che le prestazioni
possano migliorare.

In realtà penso che per applicazioni cpu intensive convenga utilizzare
il C, ed al limite richiamare le parti più pesanti in un programma
python per velocità di sviluppo.

Se il programma non è troppo complesso, di solito si ottiene di più
ottimizzando il codice per ridurre il calcolo computazionale piuttosto
che scervellarsi sulla sua compilazione. E' facile trovare colli di
bottiglia in codice scritto per funzionare e non per essere veloce.


-- 
Alessandro Ronchi
Skype: aronchi
http://www.alessandroronchi.net

SOASI Soc.Coop. - www.soasi.com
Sviluppo Software e Sistemi Open Source
Sede: Via Poggiali 2/bis, 47100 Forlì (FC)
Tel.: +39 0543 798985 - Fax: +39 0543 579928

Rispetta l'ambiente: se non ti è necessario, non stampare questa mail
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Y3s

Il giorno 22/gen/09, alle ore 15:36, ugaciaka ha scritto:
>
>
> Magari scrivere uno script che stressi il processore e vederne le
> differenze fra python ricompilato e non.

Mi sembra un test davvero poco utile...python è notoriamente inadatto  
per applicazioni cpu bound!
Dubito che riuscirai a vedere differenze importanti...


--
Antonio Valente


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Enrico Franchi

On Jan 22, 2009, at 7:25 PM, Giuseppe Ottaviano wrote:

> Penso che intendesse dire "non sono codice nativo".

Probabile. Ma io non sono un esegeta.

>
> Infatti i.pyc contengono un bytecode ad alto livello che poi viene
> interpretato da CPython, e mai compilato nativamente (a meno di non
> usare dei JIT come psyco o pypy).

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Giuseppe Ottaviano

On Jan 22, 2009, at 6:00 PM, Enrico Franchi wrote:

>
> On Jan 22, 2009, at 3:21 PM, Pietro Battiston wrote:
>
>> - i .pyc non sono codice compilato;
>
> Certo che lo sono. Il sorgente scritto in Python e' stato compilato.
> Il risultato di questa compilazione e' precisamente il pyc.

Penso che intendesse dire "non sono codice nativo".
Infatti i.pyc contengono un bytecode ad alto livello che poi viene  
interpretato da CPython, e mai compilato nativamente (a meno di non  
usare dei JIT come psyco o pypy).
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Enrico Franchi

On Jan 22, 2009, at 3:21 PM, Pietro Battiston wrote:

> - i .pyc non sono codice compilato;

Certo che lo sono. Il sorgente scritto in Python e' stato compilato.  
Il risultato di questa compilazione e' precisamente il pyc.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione ugaciaka
> - compilare l'interprete python ottimizzato per una macchina
> probabilmente dà qualche vantaggio, anche se non mi aspetterei niente di
> stratosferico

Allora, io infatti pensavo di ricompilare solo l'interprete python che
so scritto in C più ovviamente le librerie che vengono importate dai
vari programmi.

> Comunque, ugaciaka, se vuoi fare un lavoro di fino fossi in te darei
> un'occhiata al fronte gentoo. (e poi facci sapere i risultati!)
>
> Pietro
eheheh, non sono mai riuscito a installare gentoo, ora sto su
archlinux. Ho appena ricompilato su 64bit, con le opzioni di gcc
-march=core2 -O2 -pipe -fomit-frame-pointer per archlinux basta
modifcare /etc/makpkg.conf, e nel dubbio di usare la "ricompilatura"
ho riavviato il pc. Però per fare dei bench seri non saprei cosa
usare.
Magari scrivere uno script che stressi il processore e vederne le
differenze fra python ricompilato e non.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Pietro Battiston
Il giorno gio, 22/01/2009 alle 14.44 +0100, Alessandro Ronchi ha
scritto:
> 2009/1/22 ugaciaka :
> >> Hai esigenze particolari per problemi prestazionali o è solo uno
> >> sfizio personale?
> >>
> > Hai colto nel segno, sfizio personale :-)
> 
> Nei webserver se non sbaglio lo compila, creandosi i .pyc.
> Probabilmente l'interprete fa lo stesso, ma il compilato lo salva in
> memoria o in qualche temp...
> 
> Prova a dare un'occhiata anche a questo:
> http://psyco.sourceforge.net/
> 
> 

Stiamo parlando di tre cose diverse!

- i .pyc non sono codice compilato; per quel che ne so possono sveltire
il caricamento di un programma in memoria, ma non la sua esecuzione (e
poi non ci sono mica solo nei webserver).
- psyco serve a compilare porzioni di codice python; effettivamente,
permette a queste parti di funzionare sensibilmente più veloci, ma ciò
non significa che l'interprete python cambi in alcun modo, e comunque
tutto viene fatto a runtime
- compilare l'interprete python ottimizzato per una macchina
probabilmente dà qualche vantaggio, anche se non mi aspetterei niente di
stratosferico

Comunque, ugaciaka, se vuoi fare un lavoro di fino fossi in te darei
un'occhiata al fronte gentoo. (e poi facci sapere i risultati!)

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Alessandro Ronchi
2009/1/22 ugaciaka :
>> Hai esigenze particolari per problemi prestazionali o è solo uno
>> sfizio personale?
>>
> Hai colto nel segno, sfizio personale :-)

Nei webserver se non sbaglio lo compila, creandosi i .pyc.
Probabilmente l'interprete fa lo stesso, ma il compilato lo salva in
memoria o in qualche temp...

Prova a dare un'occhiata anche a questo:
http://psyco.sourceforge.net/


-- 
Alessandro Ronchi
Skype: aronchi
http://www.alessandroronchi.net

Rispetta l'ambiente: se non ti è necessario, non stampare questa mail
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione ugaciaka
> Hai esigenze particolari per problemi prestazionali o è solo uno
> sfizio personale?
>
Hai colto nel segno, sfizio personale :-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione Paolo Ferretti
Ciao,

secondo il mio parere, può darsi che un miglioramento delle  
prestazioni ci sia, ma non dovrebbe essere evidente per il normale  
utilizzo.
Hai esigenze particolari per problemi prestazionali o è solo uno  
sfizio personale?

Paolo

Il giorno 22/gen/09, alle ore 09:41, ugaciaka ha scritto:

> Salve a tutti,
> mi stavo ponendo un'idea, premetto che uso linux.
> Se io ricompilo python in base all'architettura del processore i
> programmi che vengono interpretati non gireranno "meglio"? Non dico
> più veloci, ma magari che sfruttino meglio la CPU e la RAM.
> Magari ho sparato cavolate ma sarei curioso dato che ho molti
> programmi che girano sotto Python, basta anche aprire il codice e
> vedere che librerie importano per poi ricompilare anche quelle.
>
> Ciao e grazie
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ricompilare python: porta vantaggi?

2009-01-22 Per discussione ugaciaka
Salve a tutti,
mi stavo ponendo un'idea, premetto che uso linux.
Se io ricompilo python in base all'architettura del processore i
programmi che vengono interpretati non gireranno "meglio"? Non dico
più veloci, ma magari che sfruttino meglio la CPU e la RAM.
Magari ho sparato cavolate ma sarei curioso dato che ho molti
programmi che girano sotto Python, basta anche aprire il codice e
vedere che librerie importano per poi ricompilare anche quelle.

Ciao e grazie
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python