C vs Python vs Java


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!

SpeedTest.zip

 

Alfredo

3 thoughts on “C vs Python vs Java

  1. È 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!!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...