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 235 0.000
fib_recursive gen 6 6 5 1,114 0.006
fib_iter gen 6 7 5 963 0.006
loops gen 3 1 1 352 0.007
asdl_generated gen 8 9 10 542 0.015
scoped_resource gen 24 28 29 1,391 0.017
parse gen 22 22 25 950 0.024
containers gen 5 8 7 124 0.038
tuple_return_value gen 14 16 14 246 0.058
files gen 7 4 6 106 0.064
classes gen 3 2 2 32 0.083
length gen 34 33 37 237 0.141
gc_stack_roots gen 1 1 0 10 0.144
cartesian gen 72 76 72 386 0.186
escape gen 97 102 97 435 0.223
cgi gen 258 246 256 747 0.345
varargs gen 15 16 17 25 0.604
control_flow gen 134 179 134 146 0.922

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 1 11 0.000
fib_recursive gen 0 0 1 2 0.000
files gen 0 3 1 3 0.000
gc_stack_roots gen 0 1 1 11 0.000
loops gen 0 2 2 6 0.000
tuple_return_value gen 1 1 1 8 0.126
fib_iter gen 1 0 2 7 0.147
escape gen 2 4 1 11 0.182
modules gen 1 0 2 6 0.237
control_flow gen 2 0 1 7 0.283
cartesian gen 3 4 3 10 0.298
parse gen 3 5 1 10 0.305
asdl_generated gen 2 1 0 6 0.331
containers gen 9 7 8 27 0.349
length gen 5 4 2 10 0.507
cgi gen 4 5 3 6 0.665
varargs gen 23 21 22 32 0.724
scoped_resource gen 6 5 1 8 0.760

raw benchmark files