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 13 0.000
loops gen 1 3 2 365 0.002
modules gen 1 1 0 244 0.003
fib_recursive gen 4 5 5 1,093 0.003
fib_iter gen 7 5 7 968 0.007
asdl_generated gen 8 6 9 515 0.015
scoped_resource gen 29 29 30 1,369 0.021
parse gen 23 25 23 943 0.025
containers gen 6 4 5 121 0.051
classes gen 2 2 1 35 0.052
tuple_return_value gen 14 16 14 244 0.058
files gen 7 6 6 99 0.070
length gen 36 34 36 265 0.135
cartesian gen 65 77 71 398 0.162
escape gen 93 98 103 429 0.218
cgi gen 257 247 259 738 0.348
varargs gen 19 14 18 27 0.690
control_flow gen 134 177 135 142 0.940

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 2 0 6 0.000
files gen 0 1 1 7 0.000
scoped_resource gen 1 3 0 13 0.078
classes gen 1 1 2 8 0.109
control_flow gen 1 1 3 9 0.111
modules gen 1 0 1 6 0.118
tuple_return_value gen 1 1 1 6 0.167
gc_stack_roots gen 1 0 1 7 0.191
loops gen 2 0 1 8 0.210
containers gen 7 10 8 29 0.250
parse gen 2 2 2 7 0.279
asdl_generated gen 2 4 1 6 0.331
cgi gen 3 5 2 9 0.333
fib_recursive gen 3 1 1 7 0.380
escape gen 5 9 1 8 0.627
varargs gen 20 24 20 29 0.676
length gen 3 2 2 4 0.745
cartesian gen 9 3 4 8 1.136

raw benchmark files