22 The Tiny Lua Compiler Performance Test Suite
33
44 Lua 5.1 benchmark results (over 5000 iterations):
5- Tokenizer: 175.9758 seconds (51.36%) - 28.41 iterations/second
6- Parser: 43.9889 seconds (12.84%) - 113.66 iterations/second
7- CodeGenerator: 48.5441 seconds (14.17%) - 103.00 iterations/second
8- Compiler: 74.1044 seconds (21.63%) - 67.47 iterations/second
9- Total: 342.6132 seconds
5+ Tokenizer: 175.9758 seconds (51.36%) - 28.41 iterations/second
6+ Parser: 43.9889 seconds (12.84%) - 113.66 iterations/second
7+ CodeGenerator: 48.5441 seconds (14.17%) - 103.00 iterations/second
8+ BytecodeEmitter: 74.1044 seconds (21.63%) - 67.47 iterations/second
9+ Total: 342.6132 seconds
1010
1111 LuaJIT benchmark results (over 5000 iterations):
12- Tokenizer: 20.8723 seconds (9.91%) - 239.55 iterations/second
13- Parser: 11.6405 seconds (5.53%) - 429.54 iterations/second
14- CodeGenerator: 158.4915 seconds (75.24%) - 31.55 iterations/second
15- Compiler: 19.6458 seconds (9.33%) - 254.51 iterations/second
16- Total: 210.6501 seconds
12+ Tokenizer: 20.8723 seconds (9.91%) - 239.55 iterations/second
13+ Parser: 11.6405 seconds (5.53%) - 429.54 iterations/second
14+ CodeGenerator: 158.4915 seconds (75.24%) - 31.55 iterations/second
15+ BytecodeEmitter: 19.6458 seconds (9.33%) - 254.51 iterations/second
16+ Total: 210.6501 seconds
1717--]]
1818
1919-- * Imports *--
@@ -48,10 +48,10 @@ local function benchmark_codegenerator(ast)
4848 return os.clock () - start
4949end
5050
51- local function benchmark_compiler (proto )
51+ local function benchmark_bytecodeemitter (proto )
5252 local start = os.clock ()
5353 for _ = 1 , ITERATIONS do
54- tlc .Compiler .new (proto ):compile ()
54+ tlc .BytecodeEmitter .new (proto ):emit ()
5555 end
5656 return os.clock () - start
5757end
@@ -64,17 +64,17 @@ local function benchmark()
6464 local tokenizer_elapsed = benchmark_tokenizer (TLC_CODE )
6565 local parser_elapsed = benchmark_parser (tokens )
6666 local codegenerator_elapsed = benchmark_codegenerator (ast )
67- local compiler_elapsed = benchmark_compiler (proto )
67+ local bytecodeemitter_elapsed = benchmark_bytecodeemitter (proto )
6868
69- local total_elapsed = tokenizer_elapsed + parser_elapsed + codegenerator_elapsed + compiler_elapsed
70- local tokenizer_elapsed_perc = (tokenizer_elapsed / total_elapsed ) * 100
71- local parser_elapsed_perc = (parser_elapsed / total_elapsed ) * 100
72- local codegenerator_elapsed_perc = (codegenerator_elapsed / total_elapsed ) * 100
73- local compiler_elapsed_perc = (compiler_elapsed / total_elapsed ) * 100
74- local tokenizer_iters_per_sec = ITERATIONS / tokenizer_elapsed
75- local parser_iters_per_sec = ITERATIONS / parser_elapsed
76- local codegenerator_iters_per_sec = ITERATIONS / codegenerator_elapsed
77- local compiler_iters_per_sec = ITERATIONS / compiler_elapsed
69+ local total_elapsed = tokenizer_elapsed + parser_elapsed + codegenerator_elapsed + bytecodeemitter_elapsed
70+ local tokenizer_elapsed_perc = (tokenizer_elapsed / total_elapsed ) * 100
71+ local parser_elapsed_perc = (parser_elapsed / total_elapsed ) * 100
72+ local codegenerator_elapsed_perc = (codegenerator_elapsed / total_elapsed ) * 100
73+ local bytecodeemitter_elapsed_perc = (bytecodeemitter_elapsed / total_elapsed ) * 100
74+ local tokenizer_iters_per_sec = ITERATIONS / tokenizer_elapsed
75+ local parser_iters_per_sec = ITERATIONS / parser_elapsed
76+ local codegenerator_iters_per_sec = ITERATIONS / codegenerator_elapsed
77+ local bytecodeemitter_iters_per_sec = ITERATIONS / bytecodeemitter_elapsed
7878
7979 print (string.format (" Benchmark Results (over %d iterations):" , ITERATIONS ))
8080 print (string.format (" Tokenizer: %.4f seconds (%.2f%%) - %.2f iterations/second" , tokenizer_elapsed ,
@@ -83,8 +83,8 @@ local function benchmark()
8383 parser_elapsed_perc , parser_iters_per_sec ))
8484 print (string.format (" CodeGenerator: %.4f seconds (%.2f%%) - %.2f iterations/second" , codegenerator_elapsed ,
8585 codegenerator_elapsed_perc , codegenerator_iters_per_sec ))
86- print (string.format (" Compiler: %.4f seconds (%.2f%%) - %.2f iterations/second" , compiler_elapsed ,
87- compiler_elapsed_perc , compiler_iters_per_sec ))
86+ print (string.format (" BytecodeEmitter: %.4f seconds (%.2f%%) - %.2f iterations/second" , bytecodeemitter_elapsed ,
87+ bytecodeemitter_elapsed_perc , bytecodeemitter_iters_per_sec ))
8888 print (string.format (" Total: %.4f seconds" , total_elapsed ))
8989end
9090
0 commit comments