Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(522)

Unified Diff: net/tools/dafsa/make_dafsa.py

Issue 2649033004: [3 of 4] Speedup GetRegistryLengthImpl() by seeding the DAFSA in reverse
Patch Set: Language. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/tools/dafsa/make_dafsa.py
diff --git a/net/tools/dafsa/make_dafsa.py b/net/tools/dafsa/make_dafsa.py
index 5c9082d372c18007b853a9e9599c57b5e253f736..358be16ee89f0845e4685f0a415c8dcb091d2039 100755
--- a/net/tools/dafsa/make_dafsa.py
+++ b/net/tools/dafsa/make_dafsa.py
@@ -192,8 +192,19 @@ The bytes in the generated array has the following meaning:
10: 0x82 <return_value> 0x82 & 0x0F -> return 2
"""
+import argparse
import sys
+
+parser = argparse.ArgumentParser()
+parser.add_argument('infile', nargs='?', type=argparse.FileType('r'))
+parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'))
+parser.add_argument('--reverse_inputs', action='store_true',
+ help='Generates a DAFSA on reversed input strings; this is '
+ 'useful for suffix queries')
+args = parser.parse_args()
+
+
class InputError(Exception):
"""Exception raised for errors in the input file."""
@@ -453,14 +464,17 @@ def parse_gperf(infile):
if not line.endswith(('0', '1', '2', '3', '4', '5', '6', '7')):
raise InputError('Expected value to be in the range of 0-7, found "%s"' %
line[-1])
- return [line[:-3] + line[-1] for line in lines]
-
+ result = []
+ for line in lines:
+ word, result_code = line[:-3], line[-1]
+ if args.reverse_inputs:
+ word = word[::-1]
+ result.append(word + result_code)
+ result.sort()
+ return result
def main():
- if len(sys.argv) != 3:
- print('usage: %s infile outfile' % sys.argv[0])
- return 1
- with open(sys.argv[1], 'r') as infile, open(sys.argv[2], 'w') as outfile:
+ with args.infile as infile, args.outfile as outfile:
outfile.write(words_to_cxx(parse_gperf(infile)))
return 0

Powered by Google App Engine
This is Rietveld 408576698