[Moscow.pm] Book: Modern Perl

Aleksey Mashanov aleksey.mashanov на gmail.com
Сб Ноя 27 17:03:30 PST 2010


На той неделе потратил не один час на то, чтобы доказать самому себе, что
Moose можно применять для высоконагруженных приложений, в которых жалко как
процессор, так и память. Процессор, потому что весь IO асинхронный и в io не
тупим, память, потому что много разных процессов на одной машине. Результат:
Mouse (это не опечатка). Бенчмарки по горячим следам публикую. На wallclock
просьба не смотреть. Бенчмарк с виртуальной машины, так что wallclock побит,
но использование процессора реальное. Проверял и на физическом сервере,
результат такой же (но wallclock адекватнее).

Итак, создание объекта с одним аттрибутом типа Int (для classic проверяем
регекспом):
Base class new()
Benchmark: timing 500000 iterations of classic, moose, mouse...
    classic:  4 wallclock secs ( 2.84 usr +  0.00 sys =  2.84 CPU) @
176308.54/s (n=500000)
     moose:  7 wallclock secs ( 7.11 usr +  0.00 sys =  7.11 CPU) @
70329.67/s (n=500000)
     mouse:  1 wallclock secs ( 2.16 usr +  0.00 sys =  2.16 CPU) @
231046.93/s (n=500000)

Создание объекта подкласса с еще одним аттрибутом типа Int:
Subclass new()
Benchmark: timing 200000 iterations of classic, moose, mouse...
    classic:  3 wallclock secs ( 2.98 usr +  0.00 sys =  2.98 CPU) @
67191.60/s (n=200000)
     moose:  4 wallclock secs ( 3.55 usr +  0.00 sys =  3.55 CPU) @
56263.74/s (n=200000)
     mouse:  1 wallclock secs ( 1.11 usr +  0.00 sys =  1.11 CPU) @
180281.69/s (n=200000)

Доступ по акцессору на чтение (для classic акцессора нету, лезем напрямую в
хэш):
Get attribute value
Benchmark: timing 5000000 iterations of classic, moose, mouse...
    classic:  1 wallclock secs ( 1.29 usr +  0.00 sys =  1.29 CPU) @
3878787.88/s (n=5000000)
     moose:  5 wallclock secs ( 5.26 usr +  0.00 sys =  5.26 CPU) @
950965.82/s (n=5000000)
     mouse:  1 wallclock secs ( 1.95 usr +  0.00 sys =  1.95 CPU) @
2570281.12/s (n=5000000)

А тут я пытался понять, круче ли around, чем SUPER::.
Call redefined method
Benchmark: timing 5000000 iterations of classic, moose, mouse...
    classic:  4 wallclock secs ( 3.69 usr +  0.00 sys =  3.69 CPU) @
1355932.20/s (n=5000000)
     moose:  3 wallclock secs ( 3.52 usr +  0.00 sys =  3.52 CPU) @
1422222.22/s (n=5000000)
     mouse:  3 wallclock secs ( 3.58 usr +  0.00 sys =  3.58 CPU) @
1397379.91/s (n=5000000)

Ну, и насчет памяти. Moose кушает ~8Мб, Mouse ~ 1Мб.

16 ноября 2010 г. 15:46 пользователь Mons Anderson <mons на cpan.org> написал:

> On Monday 15 November 2010 22:15:30 Михаил Шогин wrote:
> > Перешли на Class::Accessor::Fast::XS "moose-like"; %)
>
> А можно посмотреть на это? Очень интересно.
> Сам я использую accessors::fast для lightweight приложений
>
> --
> Mons Anderson aka Vladimir Perepelitsa
> <mons на cpan.org> / #99779956 / quanth на irc.freenode.net
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20101128/3b6a9b7c/attachment.html>


Подробная информация о списке рассылки Moscow-pm