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 232 0.000
fib_recursive gen 4 6 6 1,073 0.004
fib_iter gen 6 5 7 940 0.006
loops gen 3 3 2 353 0.007
asdl_generated gen 9 10 8 552 0.016
scoped_resource gen 29 29 27 1,403 0.020
parse gen 22 26 27 995 0.022
containers gen 5 8 6 129 0.039
classes gen 1 1 2 34 0.040
tuple_return_value gen 11 15 10 248 0.046
files gen 6 6 6 102 0.058
gc_stack_roots gen 1 0 1 11 0.064
length gen 35 36 35 245 0.144
cartesian gen 66 75 68 393 0.168
escape gen 96 99 92 444 0.216
cgi gen 257 246 259 736 0.349
varargs gen 15 17 18 25 0.586
control_flow gen 137 186 133 143 0.956

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.3 4.5 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.4 3.4 7.7 0.46
modules gen 3.5 3.7 3.7 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.4 3.5 7.6 0.48
parse gen 3.9 3.9 3.7 8.1 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.5 3.8 7.7 0.49
containers gen 28.3 28.5 28.5 48.2 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
loops gen 0 0 1 8 0.000
gc_stack_roots gen 1 1 0 9 0.079
asdl_generated gen 1 0 2 9 0.112
control_flow gen 1 3 4 9 0.112
fib_iter gen 1 2 0 9 0.112
classes gen 1 1 1 10 0.136
modules gen 1 0 1 10 0.142
files gen 1 1 1 6 0.164
fib_recursive gen 2 0 0 9 0.199
scoped_resource gen 3 3 4 11 0.278
escape gen 3 8 7 9 0.333
containers gen 9 7 7 25 0.363
length gen 3 1 4 8 0.378
cgi gen 4 6 4 8 0.500
parse gen 5 1 1 9 0.547
tuple_return_value gen 4 2 5 6 0.638
varargs gen 24 21 20 32 0.762
cartesian gen 9 5 7 8 1.126

raw benchmark files