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 0 0 12 0.000
modules gen 0 1 1 206 0.000
loops gen 1 2 1 311 0.004
fib_recursive gen 5 5 6 1,003 0.005
fib_iter gen 6 6 6 738 0.009
asdl_generated gen 8 9 10 507 0.015
scoped_resource gen 28 31 29 1,243 0.022
parse gen 24 23 24 911 0.026
containers gen 5 4 4 119 0.041
classes gen 2 2 1 31 0.051
tuple_return_value gen 11 14 13 216 0.053
files gen 6 6 6 90 0.068
length gen 29 31 30 226 0.128
cartesian gen 66 72 62 360 0.182
escape gen 84 95 86 379 0.222
cgi gen 185 177 187 657 0.282
varargs gen 15 13 14 27 0.560
control_flow gen 125 168 126 136 0.913

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.5 11.6 0.38
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.9 0.45
modules gen 3.5 3.5 3.7 7.9 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
fib_recursive gen 3.7 3.8 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
scoped_resource gen 3.7 3.4 3.4 7.7 0.47
control_flow gen 3.7 3.9 3.7 7.6 0.48
fib_iter gen 3.7 3.7 3.8 7.6 0.48
files gen 3.8 3.8 3.9 7.7 0.49
length gen 3.8 3.5 3.5 7.7 0.49
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 28.7 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.9 0.70

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 0 6 0.000
fib_recursive gen 0 0 0 4 0.000
files gen 0 0 0 6 0.000
parse gen 0 3 0 4 0.000
classes gen 1 0 1 7 0.114
gc_stack_roots gen 1 1 1 5 0.219
loops gen 1 1 1 5 0.219
modules gen 1 0 0 5 0.223
control_flow gen 1 1 1 4 0.252
escape gen 2 1 0 7 0.283
cgi gen 1 1 0 3 0.333
scoped_resource gen 2 1 1 4 0.496
asdl_generated gen 2 1 0 4 0.541
containers gen 8 8 9 12 0.644
tuple_return_value gen 3 2 1 4 0.717
length gen 3 2 3 4 0.750
varargs gen 9 11 10 9 1.007
cartesian gen 3 3 7 3 1.010

raw benchmark files