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 1 1 241 0.000
loops gen 2 2 3 353 0.005
fib_recursive gen 6 5 4 1,108 0.006
fib_iter gen 6 6 6 963 0.006
asdl_generated gen 10 8 9 568 0.018
scoped_resource gen 27 29 25 1,361 0.020
parse gen 24 26 22 956 0.025
gc_stack_roots gen 1 0 1 16 0.043
containers gen 6 4 5 134 0.044
tuple_return_value gen 13 13 14 246 0.053
files gen 7 6 6 100 0.068
classes gen 3 1 1 31 0.086
length gen 32 33 38 245 0.130
cartesian gen 73 76 68 413 0.176
escape gen 93 102 97 446 0.208
cgi gen 256 252 258 728 0.352
varargs gen 18 20 16 22 0.826
control_flow gen 136 177 135 149 0.914

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 2 1 9 0.000
classes gen 0 1 2 12 0.000
control_flow gen 0 2 1 6 0.000
fib_recursive gen 0 1 2 7 0.000
files gen 0 1 1 5 0.000
loops gen 1 2 0 11 0.077
fib_iter gen 1 1 1 6 0.168
gc_stack_roots gen 1 1 0 4 0.173
parse gen 2 1 4 8 0.248
containers gen 8 10 9 26 0.303
tuple_return_value gen 2 4 1 6 0.335
modules gen 1 0 0 4 0.355
scoped_resource gen 3 3 6 7 0.434
varargs gen 20 18 23 34 0.594
cgi gen 7 0 2 9 0.778
cartesian gen 6 3 6 7 0.856
length gen 7 3 1 8 0.871
escape gen 6 5 3 6 0.997

raw benchmark files