From 2bdc7ec9cf274727e2d682d82ca7f8bd9ba42779 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Tue, 29 Sep 2009 10:19:29 -0700 Subject: [PATCH] Speed up warn.py about 30x by precompiling all the regular expressions. --- tools/warn.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tools/warn.py b/tools/warn.py index b37984939..6fea20ad9 100755 --- a/tools/warn.py +++ b/tools/warn.py @@ -460,8 +460,8 @@ def dumpseverity(sev): def classifywarning(line): for i in warnpatterns: - for pat in i['patterns']: - if re.match(pat, line): + for cpat in i['compiledpatterns']: + if cpat.match(line): i['members'].append(line) return else: @@ -470,7 +470,12 @@ def classifywarning(line): # 2 or more concurrent compiles pass - +# precompiling every pattern speeds up parsing by about 30x +def compilepatterns(): + for i in warnpatterns: + i['compiledpatterns'] = [] + for pat in i['patterns']: + i['compiledpatterns'].append(re.compile(pat)) infile = open(sys.argv[1], 'r') warnings = [] @@ -481,6 +486,7 @@ targetvariant = 'unknown' linecounter = 0 warningpattern = re.compile('.* warning:.*') +compilepatterns() # read the log file and classify all the warnings lastmatchedline = '' @@ -515,7 +521,3 @@ dumpseverity(severity.HARMLESS) dumpseverity(severity.UNKNOWN) dumpfixed() - - - -