Always make_immutable (unless you have a very good reason not to)
One hears that __PACKAGE__->meta->make_immutable
is a must all your Moose classes. ( edit, ht ribusushi: never immutate your moo classes, it'll inflate them into Moose classes automatically thus defeating the point). Here's a stark reminder of why.
I was doing some benchmarks on a web application that I've been moving from mod_perl
to plack. Here's the performance of 350 requests forking off in batches of 7 before I remembered to make_immutable
:
$ time perl 002-hammer_lightly.t
# Total number of requests = 350
real 1m11.095s
user 0m3.003s
sys 0m1.336s
And after:
$ time perl 002-hammer_lightly.t
# Total number of requests = 350
real 0m17.075s
user 0m2.202s
sys 0m1.160s
One line of code, nearly 5-fold performance improvement. And despite the shim upon shim I had to make to move the thing off modperl, it seems to be two to three times faster than the modperl app (using an apples to pears comparison method anyway).