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 0 0 204 0.000
fib_recursive gen 5 4 5 1,004 0.005
loops gen 2 3 2 311 0.007
fib_iter gen 6 5 6 756 0.007
asdl_generated gen 9 9 10 512 0.017
containers gen 2 1 4 113 0.017
scoped_resource gen 30 30 29 1,246 0.024
parse gen 23 23 22 922 0.025
files gen 5 5 5 92 0.055
tuple_return_value gen 14 17 14 220 0.065
classes gen 2 1 1 33 0.067
gc_stack_roots gen 1 0 1 13 0.088
length gen 30 32 29 224 0.136
cartesian gen 65 73 67 367 0.176
escape gen 80 95 80 382 0.209
cgi gen 185 174 183 659 0.281
varargs gen 14 11 11 22 0.629
control_flow gen 126 168 126 134 0.939

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.3 11.6 0.37
gc_stack_roots gen 3.4 3.5 3.4 7.7 0.44
cartesian gen 3.4 3.7 3.4 7.6 0.45
asdl_generated gen 3.5 3.5 3.3 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
length gen 3.5 3.8 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
control_flow gen 3.7 3.7 3.8 7.7 0.47
loops gen 3.7 3.7 3.7 7.7 0.47
modules gen 3.7 3.7 3.8 7.6 0.48
scoped_resource gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.9 3.9 3.8 7.7 0.51
files gen 3.9 3.8 3.8 7.6 0.52
containers gen 28.6 28.3 28.7 48.4 0.59
varargs gen 5.6 5.6 5.5 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 1 5 0.000
control_flow gen 0 0 0 6 0.000
fib_recursive gen 0 1 1 5 0.000
gc_stack_roots gen 0 1 0 4 0.000
loops gen 0 0 0 5 0.000
scoped_resource gen 0 2 1 1 0.000
tuple_return_value gen 0 0 1 5 0.000
cgi gen 1 4 2 6 0.167
fib_iter gen 1 1 0 5 0.186
modules gen 1 1 1 5 0.218
asdl_generated gen 1 1 0 3 0.316
length gen 2 2 3 6 0.337
parse gen 1 3 2 3 0.345
files gen 1 1 1 2 0.504
containers gen 10 11 8 19 0.549
varargs gen 10 13 13 15 0.659
cartesian gen 4 2 2 4 0.993
escape gen 5 1 5 4 1.250

raw benchmark files