Re: Moose speed and schedule

[email protected] (Stevan Little)
Newsgroups perl.moose
Message-ID <[email protected]>
Jonathan,

> Unfortunately, the current object construction slowness will make  
> this a non-starter. e.g. On my powerbook it takes 25ms of CPU time  
> for Moose to construct a dead-simple object with a single accessor  
> and no inheritance.

Yes, this is a well known issue, and one I am currently working on  
solving it.

A question though, is this benchmark including Class::MOP/Moose  
compile time? Because that is something we cannot do too much about  
at the moment, which means Moose is really only usable in persistent  
environments like mod_perl/FastCGI/etc.

> http://code2.0beta.co.uk/moose/svn/Moose/trunk/lib/Moose/Cookbook/ 
> FAQ.pod mentions that immutable classes may eliminate, or at least  
> vastly improve, object construction performance, and implies this  
> will hopefully be done by the end of the year. Does this schedule  
> still sound reasonable?

There is currently an experimental branch of the immutable Moose

http://code2.0beta.co.uk/moose/svn/Moose/branches/Moose-immutable/

it requires this branch from Class-MOP as well

http://code2.0beta.co.uk/moose/svn/Class-MOP/branches/Class-MOP- 
tranformations/

It is not yet finished, but the plan is to get it completely working  
by the end of this month. Production worthiness will take a little  
longer of course, probably close to that "end of the year" timeline.

Early benchmarks show an average performance boost of 400-500%, with  
a upper ceiling of 1200% for really simple constructors and a bottom  
of about 175% for very complex constructors. A lot of this is  
dependent upon the complexity of your attributes, and I do my best to  
make sure you only pay for what you actually use.

This branch also includes a speed up version of the type constraint  
system as well, which shows a performance boost of around 400% from  
previous versions. This also contributes to the speedup in object  
construction as well.

> In the meantime, does anyone have a recommendation for an alternate  
> class framework I can use that will make the eventual jump to Moose  
> as painless as possible?

Well, it all depends on what Moose features you use. A fair portion  
of them are not available anywhere else on CPAN. One alternative,  
which I use myself, is to downgrade to Moose 0.11 (and Class::MOP  
0.30 or so). It is still a little slow, but much more manageable,  
especially if you are still in the development phase where speed  
really shouldn't be that important.

- Stevan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.