]> git.donarmstrong.com Git - perltidy.git/commitdiff
optimize sub make_alignment_patterns if no alignments
authorSteve Hancock <perltidy@users.sourceforge.net>
Tue, 14 Sep 2021 14:11:17 +0000 (07:11 -0700)
committerSteve Hancock <perltidy@users.sourceforge.net>
Tue, 14 Sep 2021 14:11:17 +0000 (07:11 -0700)
lib/Perl/Tidy/Formatter.pm

index c86fd18ae72b95eebe642782c86c97f7e8ff86c2..c9dc8b586768f828198475628f99f3e80bfd8e20 100644 (file)
@@ -21366,6 +21366,36 @@ sub pad_token {
             }
         }
 
+        # Lines with just 1 token do not have alignments
+        # so we can process them immediately.
+        if ( $iend == $ibeg ) {
+            @tokens        = ();
+            @fields        = ( $tokens_to_go[$ibeg] );
+            @patterns      = ( $types_to_go[$ibeg] );
+            @field_lengths = ( $summed_lengths_to_go[ $iend + 1 ] -
+                  $summed_lengths_to_go[$ibeg] );
+            return ( \@tokens, \@fields, \@patterns, \@field_lengths );
+        }
+
+        # Look for lines with no alignments
+        my $has_alignment;
+        for my $ii ( $ibeg + 1 .. $iend ) {
+            if ( $ralignment_type_to_go->[$ii] ) {
+                $has_alignment = 1;
+                last;
+            }
+        }
+
+        # Optimization: process lines without alignments immediately
+        if ( !$has_alignment ) {
+            @tokens        = ();
+            @fields        = ( join( '', @tokens_to_go[ $ibeg .. $iend ] ) );
+            @patterns      = ( join( '', @types_to_go[ $ibeg .. $iend ] ) );
+            @field_lengths = ( $summed_lengths_to_go[ $iend + 1 ] -
+                  $summed_lengths_to_go[$ibeg] );
+            return ( \@tokens, \@fields, \@patterns, \@field_lengths );
+        }
+
         my $j = 0;    # field index
 
         $patterns[0] = "";