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
modules gen 0 1 0 235 0.000
loops gen 1 2 3 353 0.004
fib_recursive gen 5 5 5 1,097 0.005
fib_iter gen 7 5 6 972 0.007
asdl_generated gen 6 6 9 568 0.010
scoped_resource gen 26 30 27 1,380 0.019
parse gen 21 26 24 949 0.022
classes gen 1 3 2 35 0.027
containers gen 6 3 7 133 0.046
tuple_return_value gen 13 14 14 252 0.052
files gen 6 5 4 101 0.058
gc_stack_roots gen 1 1 0 14 0.101
length gen 36 28 34 242 0.147
cartesian gen 66 73 65 394 0.167
escape gen 91 102 93 437 0.208
cgi gen 256 250 259 737 0.347
varargs gen 14 24 18 29 0.478
control_flow gen 134 179 133 151 0.889

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.5 4.3 4.5 11.6 0.38
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
escape gen 3.4 3.5 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
length gen 3.7 3.5 3.5 7.9 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
fib_recursive gen 3.7 3.4 3.5 7.6 0.48
loops gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.5 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.6 5.5 5.5 7.9 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 2 1 7 0.000
gc_stack_roots gen 0 1 1 7 0.000
fib_recursive gen 1 1 1 8 0.112
loops gen 1 2 0 11 0.115
files gen 1 2 3 7 0.139
modules gen 2 1 1 8 0.188
classes gen 2 0 1 10 0.189
containers gen 8 12 7 21 0.383
tuple_return_value gen 2 3 1 5 0.404
scoped_resource gen 4 2 3 9 0.445
length gen 3 9 5 6 0.510
escape gen 6 4 5 11 0.546
parse gen 5 1 2 9 0.554
control_flow gen 2 0 2 3 0.668
asdl_generated gen 5 4 1 6 0.769
varargs gen 25 15 21 28 0.883
cgi gen 5 3 3 5 1.000
cartesian gen 9 7 10 8 1.124

raw benchmark files