Re: [Python] ricompilare python: porta vantaggi?
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?
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/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?
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?
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/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?
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?
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?
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?
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?
> - 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?
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/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?
> 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?
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?
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