Testowałem Pi w odniesieniu do niektórych kodów symulacji w stosunku do kilku laptopów, które posiadam. Moje kody często używają liczb zmiennoprzecinkowych, więc korzystam z Raspbian (który okazuje się znacznie szybszy) ze względu na jego obsługę w trybie float. Mam ten sam prosty kod w kilku różnych językach. Oczywiście kod python jest wolniejsze niż kod C niezależnie od wykorzystania platformy ja, ale na Pi wydaje się być stosunkowo bardziej powolne, przez współczynnik wynoszący około 3. Czy ktoś wie dlaczego interpreter Pythona mogą być stosunkowo powolny na Pi, i czy jest to coś, co prawdopodobnie zostanie naprawione?
Oto 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()
Z tego postu na blogu o eksperymencie.
performance
python
hard-float
raspbian
Darren Wilkinson
źródło
źródło
Odpowiedzi:
Domyślam się, że interpreter Pythona po prostu nie jest zoptymalizowany pod kątem ARM. Python mógł zostać zoptymalizowany dla innych platform. Z mojego doświadczenia wynika, że dotyczy to oprogramowania takiego jak OpenSSH, więc zakładam, że jest podobny w przypadku Pythona.
źródło
Python prawdopodobnie cierpi na brak pamięci podręcznej procesora. Nie jestem jednak pewien, jak można to łatwo zmierzyć
źródło