<html><head><meta name="qrichtext" content="1" /></head><body style="font-size:11pt;font-family:Terminus">
<p>А можно-ли посмотреть на сами тесты?</p>
<p>очень-уж странные результаты...</p>
<p></p>
<p>в частности по памяти:</p>
<p></p>
<p>[mons@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require Moose; }; say "+" . (vsize($$) - $a)/1024 . " k"'</p>
<p>+18020 k</p>
<p>[mons@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require Mouse; }; say "+" . (vsize($$) - $a)/1024 . " k"'</p>
<p>+5380 k</p>
<p>[mons@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require Moo; }; say "+" . (vsize($$) - $a)/1024 . " k"'</p>
<p>+1024 k</p>
<p>[mons@veda ~]$ perl -MProc::Vsize -E '$a = vsize($$); eval { require accessors::fast; }; say "+" . (vsize($$) - $a)/1024 . " k"'</p>
<p>+5256 k</p>
<p></p>
<p></p>
<p>PS: (Proc::Vsize есть на гитхабе)</p>
<p></p>
<p>On Sunday 28 November 2010 04:03:30 Aleksey Mashanov wrote:</p>
<p>> На той неделе потратил не один час на то, чтобы доказать самому себе, что</p>
<p>> Moose можно применять для высоконагруженных приложений, в которых жалко как</p>
<p>> процессор, так и память. Процессор, потому что весь IO асинхронный и в io</p>
<p>> не тупим, память, потому что много разных процессов на одной машине.</p>
<p>> Результат: Mouse (это не опечатка). Бенчмарки по горячим следам публикую.</p>
<p>> На wallclock просьба не смотреть. Бенчмарк с виртуальной машины, так что</p>
<p>> wallclock побит, но использование процессора реальное. Проверял и на</p>
<p>> физическом сервере, результат такой же (но wallclock адекватнее).</p>
<p>></p>
<p>> Итак, создание объекта с одним аттрибутом типа Int (для classic проверяем</p>
<p>> регекспом):</p>
<p>> Base class new()</p>
<p>> Benchmark: timing 500000 iterations of classic, moose, mouse...</p>
<p>> classic: 4 wallclock secs ( 2.84 usr + 0.00 sys = 2.84 CPU) @</p>
<p>> 176308.54/s (n=500000)</p>
<p>> moose: 7 wallclock secs ( 7.11 usr + 0.00 sys = 7.11 CPU) @</p>
<p>> 70329.67/s (n=500000)</p>
<p>> mouse: 1 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @</p>
<p>> 231046.93/s (n=500000)</p>
<p>></p>
<p>> Создание объекта подкласса с еще одним аттрибутом типа Int:</p>
<p>> Subclass new()</p>
<p>> Benchmark: timing 200000 iterations of classic, moose, mouse...</p>
<p>> classic: 3 wallclock secs ( 2.98 usr + 0.00 sys = 2.98 CPU) @</p>
<p>> 67191.60/s (n=200000)</p>
<p>> moose: 4 wallclock secs ( 3.55 usr + 0.00 sys = 3.55 CPU) @</p>
<p>> 56263.74/s (n=200000)</p>
<p>> mouse: 1 wallclock secs ( 1.11 usr + 0.00 sys = 1.11 CPU) @</p>
<p>> 180281.69/s (n=200000)</p>
<p>></p>
<p>> Доступ по акцессору на чтение (для classic акцессора нету, лезем напрямую в</p>
<p>> хэш):</p>
<p>> Get attribute value</p>
<p>> Benchmark: timing 5000000 iterations of classic, moose, mouse...</p>
<p>> classic: 1 wallclock secs ( 1.29 usr + 0.00 sys = 1.29 CPU) @</p>
<p>> 3878787.88/s (n=5000000)</p>
<p>> moose: 5 wallclock secs ( 5.26 usr + 0.00 sys = 5.26 CPU) @</p>
<p>> 950965.82/s (n=5000000)</p>
<p>> mouse: 1 wallclock secs ( 1.95 usr + 0.00 sys = 1.95 CPU) @</p>
<p>> 2570281.12/s (n=5000000)</p>
<p>></p>
<p>> А тут я пытался понять, круче ли around, чем SUPER::.</p>
<p>> Call redefined method</p>
<p>> Benchmark: timing 5000000 iterations of classic, moose, mouse...</p>
<p>> classic: 4 wallclock secs ( 3.69 usr + 0.00 sys = 3.69 CPU) @</p>
<p>> 1355932.20/s (n=5000000)</p>
<p>> moose: 3 wallclock secs ( 3.52 usr + 0.00 sys = 3.52 CPU) @</p>
<p>> 1422222.22/s (n=5000000)</p>
<p>> mouse: 3 wallclock secs ( 3.58 usr + 0.00 sys = 3.58 CPU) @</p>
<p>> 1397379.91/s (n=5000000)</p>
<p>></p>
<p>> Ну, и насчет памяти. Moose кушает ~8Мб, Mouse ~ 1Мб.</p>
<p>></p>
<p></p>
<p></p>
<p></p>
<p>-- </p>
<p>Mons Anderson aka Vladimir Perepelitsa</p>
<p><mons@cpan.org> / #99779956 / quanth@irc.freenode.net</p>
</body></html>