From: Steve Hancock Date: Tue, 14 Sep 2021 14:11:17 +0000 (-0700) Subject: optimize sub make_alignment_patterns if no alignments X-Git-Tag: 20210717.03~9 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=19fcb2a87f258e00bec734554d48f53baacc04a1;p=perltidy.git optimize sub make_alignment_patterns if no alignments --- diff --git a/lib/Perl/Tidy/Formatter.pm b/lib/Perl/Tidy/Formatter.pm index c86fd18a..c9dc8b58 100644 --- a/lib/Perl/Tidy/Formatter.pm +++ b/lib/Perl/Tidy/Formatter.pm @@ -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] = "";