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 12 0.000
fib_recursive gen 6 4 6 1,158 0.005
modules gen 1 1 1 235 0.006
loops gen 3 1 2 363 0.007
fib_iter gen 7 6 5 966 0.007
asdl_generated gen 8 9 9 512 0.016
scoped_resource gen 24 30 25 1,398 0.017
parse gen 24 22 21 966 0.024
classes gen 2 1 2 33 0.053
files gen 6 6 5 100 0.056
containers gen 7 5 3 124 0.058
tuple_return_value gen 15 16 10 251 0.060
length gen 36 32 35 241 0.148
cartesian gen 70 72 68 389 0.181
escape gen 93 101 91 429 0.217
cgi gen 256 250 244 738 0.347
varargs gen 16 12 10 27 0.603
control_flow gen 133 176 134 151 0.881

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 2 8 0.000
fib_recursive gen 0 2 0 8 0.000
loops gen 0 2 0 6 0.000
modules gen 0 0 1 11 0.000
tuple_return_value gen 0 0 5 7 0.000
classes gen 1 1 1 10 0.087
files gen 1 1 2 7 0.134
gc_stack_roots gen 1 1 1 9 0.155
parse gen 2 5 5 9 0.228
asdl_generated gen 2 1 1 8 0.250
control_flow gen 2 2 1 8 0.252
containers gen 7 9 11 27 0.265
length gen 3 4 4 9 0.329
cgi gen 4 2 1 11 0.364
cartesian gen 5 6 7 9 0.550
scoped_resource gen 6 2 5 9 0.674
escape gen 5 3 7 7 0.716
varargs gen 22 26 29 30 0.746

raw benchmark files