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 0 234 0.000
loops gen 1 2 1 357 0.002
fib_recursive gen 6 5 4 1,121 0.006
fib_iter gen 6 6 5 972 0.006
asdl_generated gen 8 9 8 507 0.015
scoped_resource gen 22 31 26 1,341 0.016
parse gen 21 25 25 953 0.022
tuple_return_value gen 13 18 13 247 0.053
classes gen 2 2 2 32 0.056
files gen 6 7 7 102 0.058
containers gen 8 8 7 135 0.059
gc_stack_roots gen 1 1 1 11 0.122
length gen 36 30 34 249 0.143
cartesian gen 72 75 69 396 0.181
escape gen 96 104 97 444 0.215
cgi gen 259 254 258 732 0.353
varargs gen 23 18 18 27 0.848
control_flow gen 135 179 134 148 0.911

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 3 11 0.000
gc_stack_roots gen 0 1 1 9 0.000
classes gen 1 1 1 11 0.082
fib_iter gen 1 1 2 8 0.129
files gen 1 0 0 7 0.140
modules gen 1 0 1 9 0.156
control_flow gen 1 2 1 6 0.167
tuple_return_value gen 2 2 2 10 0.204
loops gen 2 1 1 7 0.242
containers gen 6 7 6 19 0.316
escape gen 2 2 2 5 0.403
parse gen 5 2 1 12 0.409
length gen 3 6 4 7 0.424
asdl_generated gen 3 1 2 6 0.473
cgi gen 3 0 2 6 0.499
varargs gen 16 21 21 29 0.549
cartesian gen 4 5 8 5 0.795
scoped_resource gen 8 1 4 8 0.998

raw benchmark files