Skip to content

Commit 472e6cc

Browse files
committed
add pycparser benchmark
1 parent 0fcc529 commit 472e6cc

File tree

7 files changed

+26054
-1
lines changed

7 files changed

+26054
-1
lines changed

benchmarks/pycparser_bench.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import json
2+
import os
3+
import sys
4+
import time
5+
6+
from pycparser import c_parser, c_ast
7+
8+
def parse_files(files):
9+
for code in files:
10+
parser = c_parser.CParser()
11+
ast = parser.parse(code, '')
12+
assert isinstance(ast, c_ast.FileAST)
13+
14+
if __name__ == "__main__":
15+
n = 20
16+
if len(sys.argv) > 1:
17+
n = int(sys.argv[1])
18+
19+
files = []
20+
directory = os.path.abspath(__file__ + "/../../data/pycparser_target")
21+
for filename in os.listdir(directory):
22+
filename = os.path.join(directory, filename)
23+
if not filename.endswith(".ppout"):
24+
continue
25+
with open(filename) as f:
26+
files.append(f.read())
27+
28+
times = []
29+
for i in range(n):
30+
times.append(time.time())
31+
32+
parse_files(files)
33+
34+
times.append(time.time())
35+
36+
if len(sys.argv) > 2:
37+
json.dump(times, open(sys.argv[2], 'w'))
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pycparser==2.20

data/pycparser_target/README

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Benchmark examples are copied from:
2+
https://github.com/eliben/pycparser/tree/master/utils/benchmark ref 5d5904d2538e054356ac01ba9ef965783f73e36b
3+
4+

0 commit comments

Comments
 (0)