Чому пітон працює відносно повільно?


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, що було свого роду питанням ...
Darren Wilkinson

2
Я прочитав цілу публікацію, не думаю, що вона внесла інформацію, неймовірно важливу для питання. І попросити всіх прочитати сторінку інформації, перш ніж вони зможуть відповісти на ваше запитання, ви не отримаєте багато відповідей. Програмісти за визначенням ледачі. Нам потрібна вся інформація у легких для перетравлення шматках :)
Jivings

8
Це заклик судження, з яким я гарно, оскільки я хлопець, який легко рухається ... Але я трохи стурбований тим, що це ревне редагування майже кожного запитання, розміщеного на цьому веб-сайті, можливо, стримує людей від участі Я знаю, що це робиться з найкращими намірами, але ви знаєте, що вони говорять про дорогу до пекла ... Я дійсно думаю, що це все, що вам, дуже активним редакторам запитань, потрібно замислитися і поговорити. Було б справжньою ганьбою, якби цей сайт не знімали через дії кількох добровільних, але оманливих людей.
Даррен Вілкінсон

1
Дурне запитання ... ти запускав однакову версію пітона з обох боків рівняння? Я б очікував, що на тому ж апаратному забезпеченні python3 запустить той же код швидше, ніж python2, тому що діапазон на python3 є ітератором, а на python2 - він створює список, який менш ефективний (використовуйте xrange на python2) ... див. Наприклад stackoverflow. com / questions / 94935 /…
Foon

Відповіді:


7

Я б здогадався, що інтерпретатор Python просто не оптимізований для ARM. Python, можливо, був оптимізований для інших платформ. На мій досвід, це стосується програмного забезпечення типу OpenSSH, тому я припускаю, що це схоже на Python.


2

Python, ймовірно, страждає від нестачі кеш-процесора. Я не впевнений, як ви можете це легко виміряти

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.