Only call _parse_version_expression() for lines that contain VERSION
Vincent Pit [Sat, 28 Jul 2012 17:22:11 +0000 (19:22 +0200)]
This saves a method call for each source line that does not contain
'VERSION', yielding a whopping 30% speedup for _parse_fh().

lib/Module/Metadata.pm

index 4fad0f3..a7e7234 100644 (file)
@@ -488,7 +488,9 @@ sub _parse_fh {
 
       # parse $line to see if it's a $VERSION declaration
       my( $vers_sig, $vers_fullname, $vers_pkg ) =
-         $self->_parse_version_expression( $line );
+          ($line =~ /VERSION/)
+              ? $self->_parse_version_expression( $line )
+              : ();
 
       if ( $line =~ $PKG_REGEXP ) {
         $pkg = $1;