Пример производительности Джулии Python в pypy

Julia — это новый язык статистического программирования, производительность которого значительно выше, чем у конкурирующих языков. Я пытаюсь это проверить. У Джулии есть тест производительности, написанный на Python: https://github.com/JuliaLang/julia/blob/master/test/perf/perf.py

Я не могу заставить его работать с pypy. Возможно, это связано с несовместимостью numpypy с numpy, но я недостаточно далеко, чтобы определить это. Я последовал совету ImportError "...or just write 'import numpypy' first in your program...", но получаю еще один ImportError: "No module named numpy.linalg"

У меня почти нулевой опыт работы с Python, и я ищу полное решение, которое я могу запустить. Преимущество того, что это работает, заключается в том, что мы можем сравнивать яблоки с яблоками (jit lang-to-jit lang).


person SFun28    schedule 27.05.2012    source источник
comment
Это означает, что он находит numpy, но не numpy.lingalg, но имеет модуль модуля numpy. Скорее всего, это проблема установки, разница в совместимости версий или несовместимость numpy. Я предлагаю вам напрямую связаться с авторами реализации Numpy PyPy. Полный код и полные трассировки ошибок были бы очень полезны для решения этой проблемы.   -  person Mikko Ohtamaa    schedule 27.05.2012
comment
Я не уверен, что у меня установлен Numpy pypy. Я клонировал репозиторий и попытался запустить setup.py в корне и в /core. в корне мне говорят, что я использую неправильную настройку. в ядре я получаю сообщение ImportError: No module named genapi. Я попытался установить модуль через pip, но его не удалось найти.   -  person SFun28    schedule 27.05.2012
comment
Я хотел бы увидеть это сравнение, если кто-то может заставить его работать.   -  person StefanKarpinski    schedule 27.05.2012
comment
См. buildbot.pypy.org/numpy-status/latest.html, linalg не поддерживается банкоматом. @StefanKarpinski: вам было бы интересно переписать, чтобы он работал с тем, что поддерживает PyPy сегодня? Кстати, вот RFE в их трекере: bugs.pypy.org/issue915   -  person TryPyPy    schedule 27.05.2012


Ответы (2)


Linalg на данный момент не реализован. Я думаю, что новый ffi и выпуск 1.9 из двери (для чего требуется довольно много исправлений, см. Трекер ошибок) получают высший приоритет. Я не думаю, что linalg прямо сейчас — это так уж интересно. Мы хотели бы, чтобы в первую очередь работало больше numpy. Я открыт, чтобы убедиться, хотя. Аргументы?

person fijal    schedule 29.05.2012
comment
Я не могу утверждать, что мое любопытство по поводу pypy против julia имеет более высокий приоритет, чем то, что вы уже запланировали =) Возможно, другие заблокированы linalg и могут вмешаться. Или по предложению @TryPyPy код julia perf может быть переписан с любым PyPy поддерживает сегодня - person SFun28; 29.05.2012
comment
это немного сложнее. Поддержка PyPy numpy не только недоработана, но и производительность не совсем такая, как хотелось бы. Поэтому, даже если вы сможете запустить тесты, мне не ясно, я был бы доволен (сейчас) результатами. Так что это немного сложный процесс в целом :) - person fijal; 29.05.2012

Тест производительности python и julia

Есть 4 теста на Julia git (perf.py) на чистом Python. Здесь я запускаю на одном компьютере perf.py (только чистый тест Python) и perf.pl для сравнения яблок с яблоками. Я немного беспокоюсь о времени Python/Pypy:/

И почему

## fibonacci ##

def fib(n):
    if n<2:
        return n
    return fib(n-1)+fib(n-2)

медленнее в Pypy, чем в Python?


Я размещаю этот вопрос в https://bugs.pypy.org/issue1344 [Pypy медленнее в рекурсии, чем Python2.7, Python3.2 и Julia] получаю следующий ответ:

Это ситуация, когда время прогрева очень велико (он пытается встроить всю рекурсию), но как только вы прогреваете его, оно на самом деле очень быстрое.

Итак, я делаю текст с разными числами n для fib(n). Действительно, Pypy работает быстрее, чем Python с n > 30, но в рекурсии медленнее, чем Julia:

[ Выделите жирным шрифтом более быструю реализацию Python]

Рекурсия в Pypy Python и Julia


Поскольку Quicksort и fib реализованы с рекурсией, они медленнее в Pypy. Julia кажется быстрее, чем PyPy.

person Diego Javier Zea    schedule 02.12.2012
comment
Хорошая штука, Диего. Хотя я не совсем уверен, как это переводится, поскольку Джулия и PyPy имеют одинаковую производительность. Похоже, Джулия всегда выигрывает и часто с большим отрывом ;-) - person StefanKarpinski; 07.05.2013
comment
Я проверил математический тест, вычислив факториал вместо фибоначчи. Из этого теста я получил результат, что CPython немного быстрее, чем Pypy. Я действительно не знаю, почему математическая производительность CPython лучше, чем у Pypy. - person Kyokook Hwang; 13.06.2013