Dlaczego python działa stosunkowo wolno?


13

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.


2
Autopromocja jest w porządku (w granicach rozsądku), ale cały link do twojego bloga naprawdę został dodany do pytania, więc kod, więc przeniosłem go tutaj.
Jivings

2
Um, zawierał także szczegóły i czasy oraz inne potencjalnie przydatne tło, które uzasadniało twierdzenie, że Python jest wolniejszy w stosunku do C na Pi niż na komputerach z linuksem Intela, co było w pewnym sensie pytaniem ...
Darren Wilkinson

2
Przeczytałem cały post, nie wydaje mi się, aby zawierał informacje niezwykle istotne dla pytania. A proszenie wszystkich o przeczytanie strony informacji, zanim będą mogli odpowiedzieć na twoje pytanie, nie dostarczy ci wielu odpowiedzi. Programiści są z definicji leniwi. Potrzebujemy wszystkich informacji w łatwych do strawienia kawałkach :)
Jivings,

8
To apel osądu, z którym jestem w porządku, ponieważ jestem łatwym facetem ... Ale jestem trochę zaniepokojony tym, że ta gorliwa nadmierna edycja prawie każdego pytania opublikowanego na tej stronie może zniechęcić ludzi od uczestnictwa. Wiem, że zrobiono to z najlepszymi intencjami, ale wiesz, co mówią o drodze do piekła ... Naprawdę myślę, że jest to coś, o czym wszyscy bardzo aktywni redaktorzy pytań powinni poświęcić trochę czasu, aby pomyśleć i porozmawiać. Byłoby prawdziwym wstydem, gdyby ta strona nie wystartowała z powodu działań kilku dobrych, ale wprowadzonych w błąd osób.
Darren Wilkinson

1
Głupie pytanie ... czy korzystałeś z tej samej wersji Pythona po obu stronach równania? Spodziewałbym się na tym samym sprzęcie, python3 będzie uruchamiał ten sam kod szybciej niż python2, ponieważ zakres na python3 jest iteratorem, a na python2 tworzy listę, która jest mniej wydajna (użyj xrange na python2) ... zobacz na przykład stackoverflow. com / pytania / 94935 /…
Foon

Odpowiedzi:


7

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.


2

Python prawdopodobnie cierpi na brak pamięci podręcznej procesora. Nie jestem jednak pewien, jak można to łatwo zmierzyć

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.