Moose는 많은 기능이 있는 반면 상대적으로 메모리를 많이 소비하고 속도가 약간 떨어지는 경향이 있다. 그래서 Moose의 모든 기능이 필요없을 경우 Mouse라는 Moose의 subset을 사용한다. 하지만 미래에 Moose의 기능을 확장 적용해야 할 경우를 고려하여 Any::Moose라는 모듈을 사용하면 사용자가 신경쓸 필요없이 알아서 최대한 빠른 것으로 적용해주므로 편리하다.
Moose와 Mouse(Any::Moose가 자동으로 최적화 했을때) 의 속도를 비교해 보았다.
Object Creation
322580.65/s Any::Moose = Mouse
322580.65/s Any::Moose Immutable = Mouse Immutable
11655.01/s Moose
212765.96/s Moose Immutable
Accessor
6250000.00/s Any::Moose = Mouse
6250000.00/s Any::Moose Immutable = Mouse Immutable
2127659.57/s Moose
2127659.57/s Moose immutable
결론
__PACKAGE__->meta->make_immutable;
은 접근자의 속도에는 영향을 미치지 않으며
Moose의 객체생성속도에만 영향을 미친다.
Any::Moose를 쓰더라도 미래에 Moose 확장을 고려하여
기본 클래스 정의는
http://search.cpan.org/perldoc?Moose::Manual::BestPractices 의
package Person; use Moose; # 또는 use Any::Moose; use namespace::autoclean; # extends, roles, attributes, etc. # methods __PACKAGE__->meta->make_immutable; 1;
을 따르도록 하자.