一直以为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.83
Cheers,
-agentzh
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论