Buongiorno a tutti.
Oggi ho fatto un esperimento. Ho implementato l’algoritmo di ordinamento più lento della storia, cioè il Selection Sort (complessità computazionale O(n^2)) , in tre diversi linguaggi: C,Python e Java. Poi ho creato un programma in Python che usando il modulo timeit cronometrasse i tempi di esecuzione dei tre diversi programmi. Il risultato? Eccolo:
C version: 0.484
Java version: 17.008
Python version: 6.657
Che il C battesse Python era scontato, ma Python batte Java alla grande: Python è il doppio più veloce del Java. Da questa prima superficiale analisi sembra che Java sia più lento del Python. Possiamo davvero ritenerci soddfisfatti? La risposta è no! Ringrazio Riovandaino del forum di Python.it.org per aver segnalato un caso in cui è Java a battare alla grande Python. Il codice lo trovate in questo post, con i relativi tempi di esecuzione. Tuttavia, come sapete, Python può, ed ecco in arrivo la scorciatoia (di scorciatoia si tratta, in effetti). La risposta è Psyco, un modulo che promette di abbattere i tempi di esecuzione degli script Python. Ma funziona davvero? Riscrivendo il codice ecco cosa otteniamo:
Pre – Psyco:
alfredo$ time python prime2.py
9592
real 0m24.237s
user 0m23.927s
sys 0m0.065s
Post – Psyco:
alfredo$ time python prime2.py
9592
real 0m1.938s
user 0m1.814s
sys 0m0.027s
Il guadagno è notevole, e il prezzo pagato? Due linee di codice all’ inizio del nostro programma.
Mica male vero?
Ringrazio tutti gli utenti di python-it.org!
Allego il codice per i più smaliziati (devo ancora riuscire a gestire bene il codice quando scrivo, la gestione di un codice in un linguaggio di programmazione in WP.com è pessima).
Alla prossima!
Alfredo
molto interessante, grazie per il post 🙂
Figurati, grazie a te per averlo letto 😀
È interessante notare il tempo totale tra compilazione e esecuzione del c, il quale sale vertiginosamente. impiega ben 8 secondi tra le 2 operazioni ma impiega soli 0,182 sec per l’esecuzione.
per avere le proporzioni il java impiega 13,1 sec e il python(che io preferisco per semplicita di utilizzo e versatilità) 2.07 sec
nello script python si risparmiano 3 centesimi arrivando a 2.04
evitando di dichiarare la funzione main e semplicemente facendogliela eseguire alla fine.
Bel post!!