dp_z (dp_z) wrote in ru_perl,
dp_z
dp_z
ru_perl

Быстродействие Perl6

perl6 -v This is Rakudo version 2017.01 built on MoarVM version 2017.01 implementing Perl 6.c.
perl -v This is perl 5, version 22, subversion 1 (v5.22.1) built for x86_64-linux-gnu-thread-multi
julia -v julia version 0.4.5
python -V Python 2.7.12
pypy -V Python 2.7.10 (5.1.2+dfsg-1~16.04, Jun 16 2016, 17:37:42)
[PyPy 5.1.2 with GCC 5.3.1 20160413]

time perl6 -e 'my $x=0; $x++ while $x < 30000000' real 0m11.016s
time perl6 -e 'my int $x=0; $x++ while $x < 30000000' real 0m0.380s
time perl -e '$x++ while $x < 30000000' real 0m1.321s
time julia -e 'x=0; while x<30000000; x+=1; end' real 0m2.239s
time python -c 'x=0
while x<30000000: x+=1'
real 0m2.824s
time pypy -c 'x=0
while x<30000000: x+=1'
real 0m0.054s
Tags: perl 6
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 12 comments
..странно.. вам никто не написал еще что
вами приведенная табличка сделана каким-то
имбецилом

потому что ОДНА ОПЕРАЦИЯ НИЧЕГО НЕ РЕШАЕТ
И НЕ ПОКАЗЫВАЕТ.

.. мм.. да, и заглавные буквы надо бы еще раскрасить
жирным, подчеркнуть, и сделать красными.
Лет дцать тому назад, "когда деревья были большими" я прочитал про Perl6, воодушевился и даже хотел купить книжку (забыл как называлась это тонкая книжица с основами языка и виртуальной машины) дабы вот прям сейчас же начать изучать этот новый язык.
В 2012 году можно было прочитать (http://eax.me/perl6-install/) "Многие ошибочно полагают, что этот язык находится в ранней стадии разработки и появится только лет через пять. Но в действительности попробовать Perl 6 можно уже сегодня и, более того, он уже вполне пригоден для написания реальных программ".
Прошло еще 5 лет... Понятно, что для сравнения реальной производительность языков нужен набор тестов, написание которого очень нетривиальная задача. Эти 6 тестов я сделал исключительно для себя для ответа на вопрос: пригоден ли Perl 6 для написания реальных программ. И вроде бы вторая строка обнадеживает (хоть и не слишком), но первая слишком разочаровывает. Для себя я вывод сделал, подождем еще лет...5.
P.S. Конечно оскорбления в сети дело то обычное, но хотелось бы предостеречь: есть такая статья УК РФ 128.1 ч. 4 (штраф до 3 млн) "Поведение имбецилов может быть асоциальным, а их интересы крайне примитивны и ограничивается в основном удовлетворением физиологических потребностей", т.е. это заболевание вполне себе представляет опасность для окружающих. Поэтому в будущем я вас умоляю используйте более мягкие понятия: кретин или умственно отсталый :)

казалось бы, по вашим же тестам выходит, что perl6, если всё правильно сделать, работает быстрее чем даже perl5. но нет, он плох, не годится, потому что ну есть же питон, и у него глядите-ка!...

так о чем речь? холивар перл6 vs питон?
"Любите ли вы театр, так как его люблю я?". Никаких холиваров, я люблю perl.
1. Почему приведен питон? Динамический язык общего назначения, который я знаю. Знал бы руби и его в таблицу бы вставил.
2. "Если все правильно сделать". Только это правильное деланье превращает в какой-то язык со статическими типами, и при этом результат, то оказывается не так уж хорош. pypy с jit (и с динамической типизацией) это демонстрирует, а уж если не указывать типы, то картина вообще грустная.
Вот о чем речь. Поскольку пример у нас примитивный, то проблема, наверное, в виртуальной машине.
3. И уж perl6 vs python это вообще некорректная постановка вопроса:
это что сравнение двух языков как таковых, конкретных реализаций или языков и сформированной вокруг них. инфраструктуры (модулей, сообществ и пр)?
Вообще, как назвать человека который пишет:

> заглавные буквы надо бы еще раскрасить жирным, подчеркнуть, и сделать красными.

и не в состоянии это сделать?
Наверно его можно назвать

очень ленивым человеком
с очень хорошим умом


.. потому что напечатать строку
быстрее, чем расставить HTML tags
> очень ленивый с очень хорошим умом

звучит как сухая вода
Неплохо бы сделать по нескольку измерений с разными длинами цикла. А то мало ли, сколько там интерпретатор загружается (с диска, кстати, в общем случае).
Если увеличить цикл в 10 раз, то результаты почти везде увеличиваются в 10 раз, у perl6 чуть меньше.
use integer;
у perl5 не дает выигрыша, у perl6 выдает ошибку (почему не разобрался)
немного даёт:
$ /usr/bin/time -f%U perl -e '$x++ while $x < 30000000;'
0.92
$ /usr/bin/time -f%U perl -e 'use integer; $x++ while $x < 30000000;'
0.88