
производительность
Вопрос производительности 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
|