perl6.suОсвоим perl6 к 2015 году!

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


       Вопрос производительности perl 6 нас волнует. Попробуем простенький тест. Нам бы для начала поскладывать числа от 1 до n. Делаем так: for (1..10000) {$sum+=}
       Время измеряем с помощью утилиты time: time ./script.pl
       Для perl 5 имеем:
       n sec
       10000 0.004
       1000000 0.146
       100000000 14.329
       Для perl 6 имеем:
       10000 24.897
       Horror! Да я в уме быстрее сосчитал.
       1000000 Ошибка сегментирования
       Дальше не будем проверять. Наблюдение за top показывает, что память со свистом утекает. Ну да ладно. Где-то в начале весны я пробовал Rakudo. Простые тесты там летали в сравнении с perl 5. Будем ждать новых версий.
       Я пытался ещё один тест сделать (отсортировать строки файла в 10000 строк длиной 1000 символов каждая). Но опять долгое ожидание, утечка. Как и написано в анонсе звездного ракудо, оно пока только для пробы пера.
      
# mutatio postrema: 28 Apr 2011


       Сразу после установки Rakudo Star 2010.08 хочется проверить производительность и - особо - утечку памяти.
       Опять попробуем простенький тест. Поскладываем числа от 1 до n. Делаем так: for (1..10000) {$sum+=}
       Время измеряем с помощью утилиты time: time ./script.pl
       Для perl 5 имеем:
       n sec
       10000 0.004
       1000000 0.146
       100000000 14.329
       Для perl 6 имеем:
       10000 4.706
       Это в шесть раз быстрее, чем было месяц назад. Однако...
       1000000 Ошибка сегментирования
       Точно такой же результат, что и месяц назад.
       Память всё равно утекает.
       Если в бесконечном цикле делать:
       loop { $i++ }
       то по крайней мере три минуты программа у меня проработала. Но памяти она заняла где-то 400 мегабайт.
       Ждём следующего релиза.
       Делу ускорения может помочь гласность. Андрей Шитов на perl6.ru даёт ссылку на лечение утечки, которое недавно нашёл Мориц Ленц. Посмотрел, но в новом коде ракудо, видимо, уже использовали это лекарство. Там, где надо было заменить 'manual' на 'auto', уже стоит последнее.
       Поэтому ждём следующего релиза, но продолжаем пробовать вкусности perl 6.

Extra
http://perl6.ru/rd9p30zicu7wgdi0j2x8/   
http://github.com/rakudo/rakudo/commit/3a339ee8ab3a72867fe914ec9c689e1f5a890645   
# mutatio postrema: 27 Aug 2010


       29 сентября 2010 года вышел новый релиз ракудо, 2010.09. Всякие разные улучшения. Ставим всё как и в прошлые разы.
       Сразу проверяем на производительность, складывая числа. Ничего с прошлого раза не изменилось. Утечка памяти, ошибка сегментирования. Будем ждать следующих релизов.

Extra
http://github.com/rakudo/star/downloads   
# mutatio postrema: 1 Oct 2010


       Пропустив октябрьский релиз, смотрим новый выпуск ракудо, 2010.11. Опять разные улучшения, но до полноценного выпуска, видимо, еще очень далеко.
       Brevi manu ставим:
       perl Configure.pl --gen-parrot
       make
       make install
       В этот раз компиляция заняла изрядное время.
       Сразу проверяем на производительность, складывая числа. Пятый перл за 0.146 секунды складывает числа от одного до миллиона. Шестой за... Я честно ждал 42 минуты, но так и не дождался. Утечка памяти замедлилась раз в сто, но есть.

Extra
http://github.com/rakudo/star/downloads   
# mutatio postrema: 29 Nov 2010


       Декабрьский выпуск ракудо.
       Ставим как обычно. У меня свеженький Debian "Squeeze". Поэтому надо предварительно не забыть:
       aptitude install build-essential libicu-dev subversion libreadline5-dev
       Близкость не захотела компилироваться:
       /usr/bin/ld: cannot find -lperl
       Доверившись интуиции, я внимательно прочитал README. Оказалось, что забыл:
       aptitude install libperl-dev
       Производительность не изменилась. За пять минут утекло оголо гигабайта памяти.

Extra
http://github.com/rakudo/star/downloads   
# mutatio postrema: 3 Jan 2011


       С пропуском в два месяца вышел апрельский ракудо.
       Ставим как обычно, только теперь потребовалось явно указать --prefix=
       perl Configure.pl --prefix=/usr/local --gen-parrot
       make
       make install
       make blizkost-install
       Пора посчитать сколько будет сумма чисел от одного до миллиона.
       Прошло полчаса...
       Скрипт отъел 1.2 гигабайта оперативки, но стойко выполняется.
       А еще перестали выполняться многие примеры на этом сайте...

Extra
http://github.com/rakudo/star/downloads   
# mutatio postrema: 20 Aug 2011


       Спустя три месяца вышло новое ракудо.
       Ставим как обычно...
       Складываем как обычно числа от одного до миллиона...
       Прошло всего лишь 14 минут. Хотя памяти отъело полтора гига из двух, но все же скрипт доработал до конца и вывел верную сумму.

Extra
http://github.com/rakudo/star/downloads   
# mutatio postrema: 20 Aug 2011


       Спустя большой промежуток времени вышло новое ракудо.
       Ставим как обычно...
       Почему-то не получается поставить blizkost (make: "нет правила для сборки цели...")
       Складываем как обычно числа от одного до миллиона...
       Прошло всего лишь 43 секунды, что относительно предыдущих версий совсем не плохо. Понятно, что производительность нельзя исчислять только скоростью складывания натуральных чисел, но эти 43 секунды уже радуют. Для сравнения: perl 5 проделывает то же самое у меня на машине за 0.15 сек. Разница почти в триста раз.
       Утечка памяти тоже изменилась. Почти сразу скрипт отъедает где-то 380 МБ, затем почти перестает это делать.
       На сайте ракудо перечислен ряд изменений. Exempli gratia:
       - теперь дистрибутив ракудо основан на новой модели объектов ("nom"), что позволило разработчиком расширить функционал и повысить корректность,
       - значительное улучшение производительности,
       - поддержка POD6
       - et cetera.
       Запустив скрипты-опыты из предыдущих 99 нот, я обнаружил ряд поломок. Например в ряде случаев метод round работает некорректно. Цепочка действий теперь может включать не более 160 оных (раньше было 240).
       Видимо, должно пройти еще полгода-год, прежде чем rakudo можно будет использовать в работе. Ну что же, будем пока потихоньку продолжать изучение.
       NB. В каталоге docs дистрибутива есть интересная шпаргалка cheatsheet.txt. Надо поизучать.

Extra
http://rakudo.org   
http://github.com/rakudo/star/downloads   
# mutatio postrema: 30 Jan 2012


       Спустя месяц вышло новое ракудо, 2012.02.
       Ставим как обычно...
       Опять складываем числа от одного до миллиона...
       Прошло ровно столько же времени, что и до этого: 43 секунды.

Extra
http://rakudo.org   
http://github.com/rakudo/star/downloads   
# mutatio postrema: 22 Mar 2012


       Опять складываем числа от одного до миллиона...
       Прошло 27 секунд, меньше, чем в прошлый раз, но и желез за это время стало немного пошустрей.

Extra
http://rakudo.org   
http://github.com/rakudo/star/downloads   
# mutatio postrema: 14 Aug 2012


       Опять складываем числа от одного до миллиона...
       Прошло 25 секунд, меньше, чем в прошлый раз на две секунды.

Extra
http://rakudo.org   
http://github.com/rakudo/star/downloads   
# mutatio postrema: 2 Oct 2012


       Вышло rakudo-star-2012.10. Интересно, что я опять стал тридцатым человеком, который скачал заветный файл.
       Собираем как обычно:
       perl Configure.pl --prefix=/usr/local --gen-parrot
       make
       make install
       Производительность не изменилась.
       В списке - ряд небольших изменений.

Extra
http://rakudo.org   
http://github.com/rakudo/star/downloads   
# mutatio postrema: 30 Oct 2012


       Вышло rakudo-star-2012.12. Скачиваем, собираем, пробуем.
       perl6 -v
       This is perl6 version 2012.12 built on parrot 4.10.0 revision 0
       for 1..1000000 { $sum+=$_ } выполнился за 22 секунды (производительность не изменилась).
       В списке - ряд небольших изменений.

Extra
http://rakudo.org   
http://rakudo.org/downloads/star/   
# mutatio postrema: 11 Jan 2013


       Вышло rakudo-star-2013.01. Скачиваем, собираем, пробуем.
       Складывание чисел от одного до миллиона заняло 68 секунд.
       В списке как всегда ряд небольших изменений.

Extra
http://rakudo.org   
http://rakudo.org/downloads/star/   
# mutatio postrema: 6 Feb 2013

   установка, производительность      charta situs       nota III, nota XXXIV, nota LXXXI, nota LXXXII, nota LXXXIII, nota LXXXIV, nota LXXXV, nota C, nota CI, nota CIII, nota CIV, nota CVIII, nota CXI, nota CXII   

    RSS     stdin@perl6.su    © Alexius Karmanov, 2010-2011