[Python] ricompilare python: porta vantaggi?

Alessandro Ronchi alessandro.ronchi a soasi.com
Gio 22 Gen 2009 23:27:32 CET


2009/1/22 Pietro Battiston <toobaz a email.it>:

> 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


Maggiori informazioni sulla lista Python