diff options
author | Eli Bendersky <eliben@google.com> | 2019-08-23 12:55:32 -0700 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2019-08-23 12:55:32 -0700 |
commit | c2e34dc6b6ca06705b2c7862486dff151f9f03ea (patch) | |
tree | 4bd5fd342494092e45afa029ad2e60c7aa103380 | |
parent | 97a3a90208cb0ec9dbf8006d520ac15250918809 (diff) | |
download | pycparser-c2e34dc6b6ca06705b2c7862486dff151f9f03ea.tar.gz |
Enhance measurement script
-rw-r--r-- | utils/internal/benchmark-parse.py | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/utils/internal/benchmark-parse.py b/utils/internal/benchmark-parse.py index 1760f55..e165e8c 100644 --- a/utils/internal/benchmark-parse.py +++ b/utils/internal/benchmark-parse.py @@ -1,15 +1,36 @@ -from __future__ import print_function +import os +import statistics import sys import time sys.path.extend(['.', '..']) -from pycparser import c_parser, c_ast, parse_file +from pycparser import c_parser, c_ast + + +def measure_parse(text, n, progress_cb): + times = [] + for i in range(n): + parser = c_parser.CParser() + t1 = time.time() + ast = parser.parse(text, '') + elapsed = time.time() - t1 + assert isinstance(ast, c_ast.FileAST) + times.append(elapsed) + progress_cb(i) + return times + + +def measure_file(filename, n): + progress_cb = lambda i: print('.', sep='', end='', flush=True) + with open(filename) as f: + print('%-20s' % os.path.basename(filename), end='', flush=True) + text = f.read() + times = measure_parse(text, n, progress_cb) + print(' Mean: %.3f Stddev: %.3f' % (statistics.mean(times), + statistics.stdev(times))) if __name__ == '__main__': - filename = sys.argv[1] - t1 = time.time() - ast = parse_file(filename) - print('Elapsed: %.4f' % (time.time() - t1)) - assert ast is not None + for i in range(1, len(sys.argv)): + measure_file(sys.argv[i], 5) |