------
my $accessor_code = q!unuse(qr/^Class\//);eval {package FooC;use base "Class::Accessor";__PACKAGE__->mk_accessors(qw/x y/);}!;
------
注意这儿的红色 eval { , 应该改成 eval q{ , 不然的话,和其他 code 比就不公平了
eval {} 后面是block, 只在 runtime 解析一次,而 eval q{} 后面这个 expr 每次都解析,直接导致了 $accessor_code 测试结果更快更好。
另外,你贴的结果中:
------
Class::Accessor 50000/s 27233% 1917% 450% --
----
应该是有些问题,可能是你运行测试脚本的时候,$accessor_code 的 eval 中存在某个语法错误导致测试结果如上所示。
但是你给出的 http://agentzh.org/misc/accessor_bench.pl 却是修正后的脚本,所以我猜你自己再运行一遍得到的结果肯定不会是 50000/s :-)
类似 App::Benchmark::Accessors 的 runtime 结果: http://is.gd/1bxSq
On 6/22/09, Don Qin <icefishc@gmail.com> wrote:一直以为Moose很慢。 今天作了个benchmark 发现速度还是相当不错的 快于Class::Accessor 比Class::Accessor::Fast稍慢。测试基于Class::Accessor中自带的那个example呃。。。你没有晒出你的 benchmark 脚本,所以不太确定你测试的是 BEGIN time 的还是 runtime 的性能,呵呵。
Moose 的运行时性能是极好的,因为它把 sugar 都尽可能“编译”成了 perl runtime 中的 primitive,所以我看到你的结果并不感到吃惊。于是我着重测试了一下 BEGIN time 即加载启动时的开销:
Rate Moose Class::XSAccessor Class::Accessor::Fast Class::Accessor
Moose 41.1/s -- -92% -100% -100%
Class::XSAccessor 539/s 1209% -- -94% -98%
Class::Accessor::Fast 8824/s 21344% 1538% -- -62%
Class::Accessor 23077/s 55985% 4185% 162% --这一组测试同时考虑了 use 本身的开销,测试脚本在这里:
http://agentzh.org/misc/accessor_bench.pl
这里 Moose 最慢,我不感到意外,但其他 3 项的顺序似乎和我期望中的刚好反置了,哈哈!欢迎大家指正我评测本身的错误 :P
如果将脚本中的 $ENABLE_UNUSE 变量置为 0,即不包含 use 本身的开销的话,结果是类似的(主要变化是大家一起变快了,因为都只需要 use 一次了):
Rate Moose Class::XSAccessor Class::Accessor::Fast Class::Accessor
Moose 183/s -- -93% -98% -100%
Class::XSAccessor 2479/s 1255% -- -73% -95%
Class::Accessor::Fast 9091/s 4870% 267% -- -82%
Class::Accessor 50000/s 27233% 1917% 450% --各模块的版本号:
Class::Accessor 0.33
Class::Accessor::Fast 0.33
Class::XSAccessor 1.03
Moose 0.83perl 版本 5.10.0.当然,对于那些长驻于内存中运行很长时间的应用来说,启动速度不是那么重要了,呵呵 :)Cheers,
-agentzh
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论