Por que o python roda de forma relativamente lenta?

13

Eu tenho comparado o Pi em alguns dos meus códigos de simulação, em relação a alguns laptops que eu tenho. Meus códigos tendem a ser intensivos em ponto flutuante, então eu tenho usado o Raspbian (que acaba sendo muito mais rápido) devido ao seu suporte a hard-float. Eu tenho o mesmo código simples em vários idiomas diferentes. Obviamente, o código python é mais lento que o código C, independentemente da plataforma que eu use, mas no Pi parece ser relativamente mais lento, com um fator em torno de 3. Alguém sabe por que o interpretador python provavelmente é relativamente lento no Pi e isso é algo que provavelmente será corrigido?

Aqui está o teste:

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()

A partir deste post no blog sobre a experiência.

Darren Wilkinson
fonte
2
A autopromoção é boa (dentro do razoável), mas todo o link do seu blog realmente adicionado à pergunta foi o código, então eu o mudei para cá.
Jivings
2
Hum, também continha detalhes e tempos e outros antecedentes potencialmente úteis que substanciavam a alegação de que o python é mais lento em relação ao C no Pi do que nas máquinas Linux baseadas em Intel, que era o ponto principal da questão ...
Darren Wilkinson
2
Eu li o post inteiro, não acho que tenha contribuído com informações incrivelmente relevantes para a pergunta. E pedir a todos que leiam uma página de informações antes que eles possam responder à sua pergunta não vai lhe dar muitas respostas. Programadores são, por definição, preguiçosos. Precisamos de todas as informações em fácil de digerir pedaços :)
Jivings
8
Essa é uma decisão que eu estou bem, já que sou um cara descontraído ... Mas estou um pouco preocupado com o fato de que essa zelosa super-edição de quase todas as perguntas postadas neste site provavelmente detenha as pessoas de participar. Eu sei que é feito com a melhor das intenções, mas você sabe o que eles dizem sobre o caminho para o inferno ... Eu realmente acho que é algo que todos vocês, editores de perguntas muito ativos, devem levar algum tempo para pensar e conversar. Seria uma pena que este site não decolasse por causa das ações de alguns indivíduos bem-intencionados, mas mal orientados.
Darren Wilkinson
1
Pergunta estúpida ... você estava executando a mesma versão do python nos dois lados da equação? Eu esperaria que no mesmo hardware, o python3 execute o mesmo código mais rapidamente que o python2 porque o range no python3 é um iterador e no python2, ele cria a lista que é menos eficiente (use xrange no python2) ... veja, por exemplo, stackoverflow. com / perguntas / 94935 /…
Foon

Respostas:

7

Eu acho que o interpretador Python simplesmente não é otimizado para o ARM. O Python pode ter sido otimizado para as outras plataformas. Na minha experiência, isso é verdade para softwares como o OpenSSH, então suponho que seja semelhante ao Python.

Kevin Chen
fonte
2

O Python provavelmente sofre com a falta de cache da CPU. Não sei ao certo como você pode medir isso com facilidade.

John La Rooy
fonte