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
loops gen 2 2 1 364 0.005
fib_recursive gen 6 6 5 1,096 0.006
modules gen 1 1 0 232 0.006
fib_iter gen 6 6 6 965 0.006
asdl_generated gen 7 8 10 513 0.013
scoped_resource gen 25 27 29 1,385 0.018
parse gen 24 27 23 966 0.025
classes gen 1 2 2 33 0.027
containers gen 4 8 8 135 0.030
gc_stack_roots gen 1 1 0 14 0.049
tuple_return_value gen 13 16 14 254 0.051
files gen 6 6 7 100 0.057
length gen 35 32 38 240 0.146
cartesian gen 71 69 71 402 0.177
escape gen 97 99 88 435 0.223
cgi gen 260 249 259 741 0.351
varargs gen 19 20 16 29 0.648
control_flow gen 135 176 134 148 0.908

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.5 0.39
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
escape gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.4 7.7 0.46
asdl_generated gen 3.5 3.3 3.4 7.6 0.47
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.8 3.5 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
length gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.47
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.6 28.4 28.4 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
fib_recursive gen 0 0 1 9 0.000
modules gen 0 0 1 7 0.000
loops gen 1 1 1 10 0.084
parse gen 1 0 2 9 0.113
gc_stack_roots gen 1 0 1 6 0.115
files gen 1 1 0 7 0.137
escape gen 1 6 9 7 0.143
control_flow gen 1 2 1 6 0.166
fib_iter gen 1 1 1 6 0.170
classes gen 2 1 1 10 0.179
cgi gen 1 3 1 4 0.250
asdl_generated gen 3 2 0 10 0.296
tuple_return_value gen 2 0 1 6 0.332
length gen 3 4 0 8 0.375
cartesian gen 4 11 4 9 0.447
scoped_resource gen 5 5 1 11 0.448
containers gen 10 6 5 19 0.531
varargs gen 19 18 22 26 0.723

raw benchmark files