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 13 0.000
loops gen 1 3 1 308 0.005
modules gen 1 0 0 206 0.005
fib_recursive gen 5 5 5 994 0.006
fib_iter gen 5 5 5 778 0.007
asdl_generated gen 9 10 9 510 0.017
scoped_resource gen 28 31 29 1,225 0.023
parse gen 22 26 22 895 0.024
containers gen 5 5 5 111 0.047
tuple_return_value gen 12 16 12 220 0.055
files gen 6 6 6 88 0.068
classes gen 2 2 1 28 0.077
length gen 29 32 30 222 0.133
cartesian gen 67 72 69 364 0.184
escape gen 82 89 84 379 0.217
cgi gen 185 176 184 655 0.282
varargs gen 14 13 12 24 0.580
control_flow gen 125 171 125 136 0.917

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.6 4.6 11.6 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.9 0.42
cgi gen 3.4 3.5 3.5 7.6 0.45
asdl_generated gen 3.5 3.4 3.4 7.9 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.4 7.7 0.46
fib_iter gen 3.5 3.5 3.7 7.6 0.47
length gen 3.7 3.7 3.7 7.9 0.47
parse gen 3.8 3.9 3.9 8.1 0.47
fib_recursive gen 3.7 3.7 3.8 7.7 0.47
loops gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
tuple_return_value gen 3.8 3.8 3.8 7.7 0.49
files gen 3.9 3.7 3.8 7.7 0.51
containers gen 28.6 28.5 28.8 48.4 0.59
varargs gen 5.5 5.6 5.6 7.9 0.70

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 10 0.000
fib_recursive gen 0 0 0 5 0.000
files gen 0 0 0 6 0.000
modules gen 0 1 1 1 0.000
loops gen 1 0 1 6 0.121
cgi gen 1 2 2 7 0.143
control_flow gen 1 0 1 6 0.166
fib_iter gen 1 1 1 4 0.223
scoped_resource gen 1 0 1 4 0.244
gc_stack_roots gen 1 1 1 4 0.273
containers gen 7 8 8 20 0.364
asdl_generated gen 1 0 1 2 0.475
escape gen 3 6 1 5 0.604
parse gen 2 0 2 3 0.663
tuple_return_value gen 2 0 2 3 0.676
length gen 3 0 2 4 0.736
varargs gen 10 11 12 13 0.765
cartesian gen 2 3 3 2 0.999

raw benchmark files