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 0 15 0.000
modules gen 1 0 1 235 0.003
loops gen 2 2 3 353 0.005
fib_recursive gen 6 6 6 1,094 0.006
fib_iter gen 6 7 7 963 0.006
asdl_generated gen 9 7 9 520 0.017
scoped_resource gen 25 30 27 1,398 0.018
parse gen 19 24 22 955 0.020
containers gen 6 6 4 124 0.048
files gen 5 7 6 98 0.050
tuple_return_value gen 14 16 15 244 0.057
classes gen 2 1 0 30 0.058
length gen 33 32 36 240 0.136
cartesian gen 67 74 69 405 0.164
escape gen 92 97 94 429 0.215
cgi gen 259 249 257 722 0.359
varargs gen 18 16 11 26 0.700
control_flow gen 135 177 137 143 0.946

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 4 2 9 0.000
fib_recursive gen 0 0 0 8 0.000
classes gen 1 2 3 12 0.073
modules gen 1 1 0 9 0.078
loops gen 1 1 0 9 0.093
tuple_return_value gen 1 1 0 10 0.099
asdl_generated gen 1 3 1 9 0.109
control_flow gen 1 2 2 9 0.110
fib_iter gen 1 0 0 7 0.143
files gen 2 0 1 10 0.196
gc_stack_roots gen 1 1 1 5 0.270
containers gen 8 8 10 26 0.303
scoped_resource gen 5 2 3 8 0.641
varargs gen 20 23 27 31 0.652
length gen 6 5 3 9 0.660
parse gen 7 3 3 10 0.688
cartesian gen 8 6 6 7 1.152
escape gen 6 8 4 5 1.203

raw benchmark files