mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oils/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 0 12 0.000
modules gen 0 1 1 236 0.000
loops gen 2 3 3 358 0.005
fib_recursive gen 6 6 6 1,124 0.006
fib_iter gen 7 5 4 969 0.007
asdl_generated gen 9 8 7 516 0.017
scoped_resource gen 25 29 27 1,368 0.018
parse gen 24 27 25 956 0.025
containers gen 5 4 7 128 0.038
classes gen 1 1 3 31 0.043
files gen 5 6 6 97 0.047
tuple_return_value gen 15 15 14 248 0.061
length gen 39 30 35 239 0.162
cartesian gen 67 75 67 401 0.168
escape gen 93 100 95 464 0.201
cgi gen 248 249 257 747 0.331
varargs gen 21 16 22 26 0.821
control_flow gen 135 180 135 150 0.905

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 4.3 4.5 4.5 11.5 0.38
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cgi gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
fib_iter gen 3.5 3.7 3.7 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.4 3.7 7.6 0.47
files gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.9 3.9 3.9 8.0 0.49
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 7 0.000
fib_iter gen 0 2 3 8 0.000
fib_recursive gen 0 0 0 7 0.000
tuple_return_value gen 0 2 1 7 0.000
loops gen 1 0 0 9 0.095
length gen 1 7 4 10 0.099
asdl_generated gen 1 2 3 10 0.100
classes gen 1 2 0 11 0.121
gc_stack_roots gen 1 1 1 8 0.186
modules gen 1 0 1 7 0.210
parse gen 2 0 0 9 0.228
files gen 2 1 1 10 0.228
containers gen 10 11 7 25 0.386
varargs gen 17 22 16 31 0.558
scoped_resource gen 7 4 3 9 0.763
cgi gen 4 3 3 5 0.799
escape gen 5 5 4 6 0.837
cartesian gen 8 8 8 2 4.028

raw benchmark files