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 1 1 13 0.000
modules gen 0 0 1 233 0.000
loops gen 2 3 3 364 0.005
fib_iter gen 5 5 7 949 0.005
fib_recursive gen 6 5 5 1,090 0.006
asdl_generated gen 9 7 8 513 0.018
scoped_resource gen 27 30 28 1,386 0.019
parse gen 22 25 22 939 0.023
classes gen 1 1 2 32 0.029
containers gen 7 7 6 129 0.053
tuple_return_value gen 14 16 13 243 0.059
files gen 6 7 6 101 0.059
length gen 37 33 38 240 0.152
cartesian gen 71 72 69 391 0.181
escape gen 94 100 94 434 0.216
cgi gen 259 251 260 749 0.346
control_flow gen 134 176 134 145 0.929
varargs gen 24 25 14 26 0.936

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.3 4.3 11.5 0.38
escape gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
length gen 3.4 3.5 3.4 7.7 0.44
parse gen 3.7 3.8 3.9 8.3 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
modules gen 3.4 3.7 3.5 7.6 0.45
fib_iter gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
scoped_resource gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.3 28.7 28.4 48.2 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 1 7 0.000
loops gen 1 0 0 10 0.086
tuple_return_value gen 1 1 2 11 0.092
files gen 1 0 1 7 0.140
control_flow gen 1 3 2 7 0.144
modules gen 1 1 0 9 0.158
classes gen 2 2 1 11 0.169
asdl_generated gen 1 3 3 6 0.173
gc_stack_roots gen 1 0 1 8 0.176
length gen 2 5 2 9 0.219
fib_iter gen 2 2 0 8 0.254
cgi gen 2 3 3 7 0.286
containers gen 7 7 7 23 0.298
scoped_resource gen 4 2 3 13 0.303
varargs gen 15 14 25 31 0.491
parse gen 4 2 4 6 0.655
escape gen 4 5 6 5 0.798
cartesian gen 5 8 6 6 0.830

raw benchmark files