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 10 0.000
fib_recursive gen 4 6 6 1,092 0.004
fib_iter gen 6 5 7 1,065 0.006
modules gen 1 1 0 240 0.006
loops gen 3 2 2 356 0.007
asdl_generated gen 9 9 9 513 0.018
scoped_resource gen 27 31 27 1,370 0.019
parse gen 23 23 23 938 0.025
classes gen 1 1 1 36 0.037
files gen 4 6 5 100 0.045
containers gen 7 6 6 129 0.054
tuple_return_value gen 14 13 14 245 0.057
length gen 33 30 31 246 0.136
cartesian gen 67 75 71 393 0.171
escape gen 95 99 95 434 0.218
cgi gen 258 247 256 738 0.350
varargs gen 17 9 15 21 0.805
control_flow gen 137 182 136 145 0.942

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.6 0.37
gc_stack_roots gen 3.3 3.4 3.3 7.7 0.42
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
fib_iter gen 3.4 3.5 3.5 7.6 0.45
parse gen 3.7 3.7 3.7 8.1 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.4 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.4 3.7 7.6 0.47
length 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.8 3.8 7.7 0.49
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.7 28.3 28.5 48.2 0.60
varargs gen 5.5 5.4 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 0 9 0.000
loops gen 0 1 0 8 0.000
modules gen 0 0 1 8 0.000
tuple_return_value gen 1 3 1 9 0.111
fib_iter gen 1 2 0 9 0.112
asdl_generated gen 1 1 1 8 0.125
gc_stack_roots gen 1 0 1 11 0.128
classes gen 1 2 1 8 0.168
fib_recursive gen 2 0 0 9 0.200
escape gen 2 7 2 10 0.202
parse gen 3 4 3 11 0.278
scoped_resource gen 3 1 3 10 0.296
containers gen 7 9 7 22 0.318
files gen 2 1 2 7 0.320
cgi gen 3 6 5 6 0.500
varargs gen 22 30 23 36 0.608
length gen 5 7 7 7 0.703
cartesian gen 8 5 4 8 0.998

raw benchmark files