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
loops gen 1 2 2 317 0.003
fib_recursive gen 6 5 6 995 0.006
modules gen 1 1 0 207 0.006
fib_iter gen 6 6 7 739 0.007
asdl_generated gen 7 9 10 508 0.013
scoped_resource gen 28 30 29 1,231 0.023
parse gen 22 25 22 894 0.025
containers gen 6 6 3 123 0.048
tuple_return_value gen 15 15 14 225 0.064
files gen 6 5 5 90 0.069
classes gen 2 2 2 32 0.072
gc_stack_roots gen 1 1 0 14 0.087
length gen 30 28 31 224 0.134
cartesian gen 67 72 64 358 0.187
escape gen 79 94 83 379 0.210
cgi gen 183 177 184 659 0.277
varargs gen 15 15 12 29 0.511
control_flow gen 123 167 126 137 0.897

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.4 3.4 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.7 3.5 3.5 7.9 0.47
escape gen 3.5 3.7 3.5 7.5 0.47
fib_iter gen 3.7 3.8 3.5 7.7 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.9 3.8 8.0 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
files gen 3.8 3.9 3.8 7.7 0.49
modules gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.8 3.9 7.6 0.50
containers gen 28.6 28.6 28.3 48.3 0.59
varargs gen 5.6 5.6 5.5 7.9 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 0 6 0.000
fib_recursive gen 0 1 0 6 0.000
files gen 0 1 1 5 0.000
gc_stack_roots gen 0 0 1 3 0.000
modules gen 0 1 1 5 0.000
tuple_return_value gen 0 1 1 2 0.000
fib_iter gen 1 0 0 5 0.184
scoped_resource gen 1 1 1 5 0.196
parse gen 2 1 2 8 0.250
loops gen 1 1 0 4 0.276
containers gen 8 7 11 16 0.493
cartesian gen 2 3 5 4 0.499
length gen 3 4 1 6 0.502
asdl_generated gen 3 1 0 5 0.576
control_flow gen 3 2 0 5 0.599
cgi gen 4 1 2 5 0.803
varargs gen 9 9 12 8 1.111
escape gen 6 1 3 5 1.207

raw benchmark files