Почему питон работает относительно медленно?

13

Я тестировал Pi на некоторых из моих кодов моделирования, по сравнению с парой ноутбуков, которые у меня есть. Мои коды, как правило, интенсивно работают с плавающей запятой, поэтому я использую Raspbian (который оказывается намного быстрее) из-за его поддержки с плавающей запятой. У меня один и тот же простой код на нескольких разных языках. Очевидно питон код медленнее , чем C код независимо от использования платформы I, но на Pi это , кажется, относительно более медленно, с коэффициентом около 3. Кто - нибудь знает , почему интерпретатор Python, вероятно, будет относительно медленным на Pi, и это то, что может быть исправлено?

Вот тест:

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

Из этого сообщения в блоге об эксперименте.

Даррен Уилкинсон
источник
2
Самореклама - это хорошо (в пределах разумного), но вся ваша ссылка на блог действительно добавила к вопросу код, поэтому я переместил его сюда.
Jivings
2
Хм, он также содержал подробности, время и другую потенциально полезную информацию, которая обосновывала утверждение, что python медленнее по сравнению с C на Pi, чем на Linux-машинах на базе Intel, что было своего рода вопросом ...
Даррен Уилкинсон,
2
Я прочитал весь пост, я не думаю, что он предоставил информацию, невероятно важную для вопроса. И попросить всех прочитать страницу с информацией, прежде чем они смогут ответить на ваш вопрос, не даст вам много ответов. Программисты по определению ленивы. Нам нужна вся информация в легко перевариваемых кусках :)
Jivings
8
С этим у меня все в порядке, так как я спокойный парень ... Но я немного обеспокоен тем, что это ревностное чрезмерное редактирование почти каждого вопроса, размещенного на этом сайте, вероятно, отпугнет людей от участия. Я знаю, что это сделано из лучших побуждений, но вы знаете, что они говорят о дороге в ад ... Я действительно думаю, что всем вам, очень активным редакторам вопросов, нужно уделить время, чтобы подумать и поболтать. Было бы настоящим позором, если бы этот сайт не взлетел из-за действий нескольких благонамеренных, но сбитых с толку людей.
Даррен Уилкинсон
1
Глупый вопрос ... вы использовали одну и ту же версию python по обе стороны уравнения? Я ожидаю, что на том же оборудовании python3 будет выполнять тот же код быстрее, чем python2, потому что range на python3 является итератором, а на python2 создает список, который менее эффективен (используйте xrange на python2) ... см., Например, stackoverflow. ru / questions / 94935 /…
Foon

Ответы:

7

Я предполагаю, что интерпретатор Python просто не оптимизирован для ARM. Возможно, Python был оптимизирован для других платформ. По моему опыту, это верно для программного обеспечения, такого как OpenSSH, поэтому я предполагаю, что это похоже на Python.

Кевин Чен
источник
2

Python, вероятно, страдает от недостатка кэша процессора. Я не уверен, как вы можете измерить это легко, хотя

Джон Ла Рой
источник