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 1 12 0.000
modules gen 0 0 0 200 0.000
fib_recursive gen 6 5 5 994 0.006
loops gen 2 3 1 310 0.007
fib_iter gen 6 5 7 741 0.009
asdl_generated gen 9 10 9 511 0.017
scoped_resource gen 30 28 27 1,229 0.024
parse gen 23 23 22 916 0.025
containers gen 6 4 4 112 0.052
files gen 5 6 4 90 0.058
tuple_return_value gen 14 13 14 219 0.066
classes gen 2 2 2 32 0.071
length gen 30 30 30 223 0.135
cartesian gen 66 73 65 362 0.181
escape gen 84 94 81 396 0.213
cgi gen 181 177 183 663 0.274
varargs gen 16 15 12 32 0.512
control_flow gen 123 168 123 133 0.931

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.6 4.6 4.5 11.5 0.40
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.5 3.5 7.7 0.44
cartesian gen 3.5 3.5 3.5 7.9 0.45
cgi gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.7 3.5 3.7 7.9 0.47
scoped_resource gen 3.7 3.7 3.7 7.9 0.47
fib_iter gen 3.7 3.8 3.7 7.7 0.47
loops gen 3.7 3.7 3.7 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.9 3.8 8.0 0.47
files gen 3.8 3.7 3.9 7.9 0.48
fib_recursive gen 3.8 3.8 3.7 7.7 0.49
length gen 3.8 3.5 3.7 7.7 0.49
control_flow gen 3.9 3.7 3.8 7.9 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.7 28.6 48.4 0.59
varargs gen 5.8 5.6 5.5 7.7 0.75

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 0 0 6 0.000
fib_iter gen 0 1 0 4 0.000
fib_recursive gen 0 0 1 6 0.000
loops gen 0 0 1 5 0.000
scoped_resource gen 0 3 2 7 0.000
tuple_return_value gen 0 3 1 5 0.000
modules gen 1 2 1 6 0.189
parse gen 1 3 2 5 0.200
files gen 1 0 2 5 0.207
asdl_generated gen 1 0 1 5 0.214
gc_stack_roots gen 1 1 0 5 0.233
escape gen 1 2 5 4 0.251
control_flow gen 2 1 3 7 0.285
length gen 2 2 2 6 0.326
containers gen 7 8 9 18 0.377
cartesian gen 3 2 4 2 1.493
varargs gen 8 10 12 5 1.638
cgi gen 5 2 3 1 4.983

raw benchmark files