Factor out a concatenation in grabbing the instance.
Shawn M Moore [Tue, 15 Jul 2008 03:11:53 +0000 (03:11 +0000)]
In a profile of my app that uses this, this small function took up more time than any other function, because it's called so damn often.

lib/MooseX/ClassAttribute.pm

index 42eefa4..7306caf 100644 (file)
@@ -69,10 +69,11 @@ sub process_class_attribute ## no critic RequireArgUnpacking
             unless grep { $_->isa('Moose::Object') } @parents;
 
         my $container_pkg = 'MooseX::ClassAttribute::Container::' . $caller;
+        my $instance_holder = $container_pkg . '::Self';
 
         my $instance_meth = sub {
             no strict 'refs'; ## no critic ProhibitNoStrict
-            return ${ $container_pkg . '::Self' } ||= shift->new(@_);
+            return $$instance_holder ||= shift->new(@_);
         };
 
         my $class =