2424argparser .add_argument (
2525 "--parser" ,
2626 action = "store" ,
27- choices = ["pegen " , "cpython " ],
27+ choices = ["new " , "old " ],
2828 default = "pegen" ,
2929 help = "Which parser to benchmark (default is pegen)" ,
3030)
4040command_compile = subcommands .add_parser (
4141 "compile" , help = "Benchmark parsing and compiling to bytecode"
4242)
43- command_parse = subcommands .add_parser ("parse" , help = "Benchmark parsing and generating an ast.AST" )
43+ command_parse = subcommands .add_parser (
44+ "parse" , help = "Benchmark parsing and generating an ast.AST"
45+ )
46+ command_notree = subcommands .add_parser (
47+ "notree" , help = "Benchmark parsing and dumping the tree"
48+ )
4449
4550
4651def benchmark (func ):
@@ -62,7 +67,7 @@ def wrapper(*args):
6267
6368@benchmark
6469def time_compile (source , parser ):
65- if parser == "cpython " :
70+ if parser == "old " :
6671 return _peg_parser .compile_string (
6772 source ,
6873 oldparser = True ,
@@ -73,32 +78,40 @@ def time_compile(source, parser):
7378
7479@benchmark
7580def time_parse (source , parser ):
76- if parser == "cpython " :
81+ if parser == "old " :
7782 return _peg_parser .parse_string (source , oldparser = True )
7883 else :
7984 return _peg_parser .parse_string (source )
8085
8186
87+ @benchmark
88+ def time_notree (source , parser ):
89+ if parser == "old" :
90+ return _peg_parser .parse_string (source , oldparser = True , ast = False )
91+ else :
92+ return _peg_parser .parse_string (source , ast = False )
93+
94+
8295def run_benchmark_xxl (subcommand , parser , source ):
8396 if subcommand == "compile" :
8497 time_compile (source , parser )
8598 elif subcommand == "parse" :
8699 time_parse (source , parser )
100+ elif subcommand == "notree" :
101+ time_notree (source , parser )
87102
88103
89104def run_benchmark_stdlib (subcommand , parser ):
105+ modes = {"compile" : 2 , "parse" : 1 , "notree" : 0 }
90106 for _ in range (3 ):
91107 parse_directory (
92108 "../../Lib" ,
93- "../../Grammar/python.gram" ,
94- "../../Grammar/Tokens" ,
95109 verbose = False ,
96110 excluded_files = ["*/bad*" , "*/lib2to3/tests/data/*" ,],
97- skip_actions = False ,
98111 tree_arg = 0 ,
99112 short = True ,
100- mode = 2 if subcommand == "compile" else 1 ,
101- parser = parser ,
113+ mode = modes [ subcommand ] ,
114+ oldparser = ( parser == "old" ) ,
102115 )
103116
104117
0 commit comments