Perché python funziona relativamente lentamente?


13

Ho analizzato il Pi su alcuni dei miei codici di simulazione, rispetto a un paio di laptop che ho. I miei codici tendono ad essere in virgola mobile, quindi ho usato Raspbian (che risulta essere molto più veloce) a causa del suo supporto float. Ho lo stesso codice semplice in diverse lingue. Ovviamente il codice Python è più lento del codice C qualunque sia la piattaforma che uso, ma sul Pi sembra essere relativamente più lento, di un fattore di circa 3. Qualcuno sa perché è probabile che l'interprete Python sia relativamente lento sul Pi, e è qualcosa che probabilmente verrà risolto?

Ecco il test:

import random,math

def gibbs(N=50000,thin=1000):
    x=0
    y=0
    print "Iter  x  y"
    for i in range(N):
        for j in range(thin):
            x=random.gammavariate(3,1.0/(y*y+4))
            y=random.gauss(1.0/(x+1),1.0/math.sqrt(2*x+2))
        print i,x,y

gibbs()

Da questo post sul blog sull'esperimento.


2
L'autopromozione va bene (entro limiti ragionevoli) ma tutto il link del tuo blog aggiunto alla domanda era il codice, quindi l'ho spostato qui.
Jivings,

2
Um, conteneva anche dettagli e tempistiche e altri retroscena potenzialmente utili che hanno corroborato l'affermazione che Python è più lento rispetto a C sul Pi rispetto alle macchine Linux basate su Intel, che era un po 'il punto della domanda ...
Darren Wilkinson

2
Ho letto l'intero post, non credo che abbia fornito informazioni incredibilmente rilevanti per la domanda. E chiedere a tutti di leggere una pagina di informazioni prima di poter rispondere alla tua domanda non ti darà molte risposte. I programmatori sono per definizione pigri. Abbiamo bisogno di tutte le informazioni in pezzi facili da digerire :)
Jivings

8
È un appello di giudizio con cui sto bene, dato che sono un tipo disinvolto ... Ma sono un po 'preoccupato che questo zelante eccesso di editing di quasi tutte le domande pubblicate su questo sito possa scoraggiare le persone dalla partecipazione. So che è fatto con le migliori intenzioni, ma sai cosa dicono sulla strada per l'inferno ... Penso davvero che sia qualcosa su cui tutti i redattori di domande molto attivi dovrebbero prendersi del tempo per pensare e parlare. Sarebbe un vero peccato se questo sito non decollasse a causa delle azioni di alcuni individui ben intenzionati ma fuorviati.
Darren Wilkinson,

1
Domanda stupida ... stavi eseguendo la stessa versione di Python su entrambi i lati dell'equazione? Mi aspetterei sullo stesso hardware, python3 eseguirà lo stesso codice più velocemente di python2 perché l'intervallo su python3 è un iteratore e su python2, crea l'elenco che è meno efficiente (usa xrange su python2) ... vedi ad esempio StackOverflow. com / questions / 94935 /…
Foon

Risposte:


7

Immagino che l'interprete Python non sia semplicemente ottimizzato per ARM. Python potrebbe essere stato ottimizzato per le altre piattaforme. Nella mia esperienza, questo è vero per software come OpenSSH, quindi presumo sia simile per Python.


2

Python probabilmente soffre della mancanza di cache della CPU. Non sono sicuro di come puoi misurarlo facilmente però

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.