History

checkpatch: reduce is_maintained_obsolete lookup runtime

The is_maintained_obsolete function can be called twice using the same filename. This function spawns a process using get_maintainer.pl. Store the status of each filename when spawned and use the stored result to eliminate the spawning of unnecessary duplicate child processes. Example: old: $ time ./scripts/checkpatch.pl hp100-Move-to-staging.patch > /dev/null real 0m1.767s user 0m1.634s sys 0m0.141s new: $ time ./scripts/checkpatch.pl hp100-Move-to-staging.patch > /dev/null real 0m1.184s user 0m1.085s sys 0m0.103s

Joe Perches committed 6 years ago

Commit cd28b111 parent d439e6a1 file · +6 −2Browse files

Showing the changes to scripts/checkpatch.pl (1 of 1 file). Show all

Unified · Split

scripts/checkpatch.pl+6−2
@@ -874,14 +874,18 @@ sub seed_camelcase_file { · 873 unmodified lines
874874 }
875875 }
876876
877+our %maintained_status = ();
878+
877879 sub is_maintained_obsolete {
878880 my ($filename) = @_;
879881
880882 return 0 if (!$tree || !(-e "$root/scripts/get_maintainer.pl"));
881883
882− my $status = `perl $root/scripts/get_maintainer.pl --status --nom --nol --nogit --nogit-fallback -f $filename 2>&1`;
884+ if (!exists($maintained_status{$filename})) {
885+ $maintained_status{$filename} = `perl $root/scripts/get_maintainer.pl --status --nom --nol --nogit --nogit-fallback -f $filename 2>&1`;
886+ }
883887
884− return $status =~ /obsolete/i;
888+ return $maintained_status{$filename} =~ /obsolete/i;
885889 }
886890
887891 sub is_SPDX_License_valid {