А можно-ли посмотреть на сами тесты?
очень-уж странные результаты...
в частности по памяти:
[m...@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require Moose; };
say "+" . (vsize($$) - $a)/1024 . " k"'
+18020 k
[m...@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require Mouse; };
say "+" . (vsize($$) - $a)/1024 . " k"'
+5380 k
[m...@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require Moo; };
say "+" . (vsize($$) - $a)/1024 . " k"'
+1024 k
[m...@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require
accessors::fast; }; say "+" . (vsize($$) - $a)/1024 . " k"'
+5256 k
PS: (Proc::Vsize есть на гитхабе)
On Sunday 28 November 2010 04:03:30 Aleksey Mashanov wrote:
> На той неделе потратил не один час на то, чтобы доказать самому себе, что
> 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Мб.
>
--
Mons Anderson aka Vladimir Perepelitsa
<[email protected]> / #99779956 / [email protected]--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org