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 1 235 0.000
loops gen 1 3 1 353 0.002
fib_recursive gen 6 5 6 1,102 0.006
fib_iter gen 6 7 5 968 0.006
asdl_generated gen 8 9 7 508 0.017
scoped_resource gen 26 28 29 1,368 0.019
parse gen 23 25 26 954 0.024
containers gen 6 5 5 129 0.045
tuple_return_value gen 13 15 14 240 0.055
files gen 7 5 6 102 0.069
classes gen 3 0 1 38 0.071
gc_stack_roots gen 1 0 1 11 0.130
length gen 36 36 35 246 0.145
cartesian gen 72 74 73 389 0.186
escape gen 95 103 96 430 0.222
cgi gen 260 250 257 777 0.335
varargs gen 14 17 16 29 0.490
control_flow gen 133 177 136 155 0.863

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.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.4 3.3 3.5 7.6 0.45
loops gen 3.4 3.5 3.5 7.6 0.45
modules gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
fib_iter gen 3.7 3.4 3.4 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
length gen 3.7 3.4 3.5 7.7 0.47
scoped_resource gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.6 28.4 48.2 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 3 4 7 0.000
classes gen 0 3 2 5 0.000
fib_recursive gen 0 1 0 7 0.000
files gen 0 2 1 6 0.000
gc_stack_roots gen 0 1 1 10 0.000
loops gen 2 1 2 9 0.191
fib_iter gen 1 0 2 5 0.202
tuple_return_value gen 2 2 1 9 0.210
asdl_generated gen 2 2 4 8 0.263
parse gen 3 3 0 11 0.269
modules gen 1 1 0 5 0.286
cartesian gen 3 8 2 10 0.301
control_flow gen 2 2 2 6 0.330
containers gen 8 10 8 23 0.334
length gen 3 1 4 8 0.373
escape gen 4 2 3 10 0.401
scoped_resource gen 4 3 2 5 0.797
varargs gen 25 21 23 27 0.939

raw benchmark files