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
modules gen 1 0 1 243 0.003
fib_recursive gen 5 6 5 1,092 0.004
fib_iter gen 5 6 7 964 0.005
loops gen 3 3 1 377 0.007
asdl_generated gen 9 8 9 510 0.018
scoped_resource gen 28 30 28 1,368 0.021
parse gen 24 23 21 969 0.025
containers gen 6 8 7 123 0.049
classes gen 2 1 1 33 0.056
files gen 6 6 4 100 0.058
tuple_return_value gen 15 16 14 251 0.061
gc_stack_roots gen 1 1 1 13 0.108
length gen 36 31 32 241 0.150
cartesian gen 70 79 68 407 0.173
escape gen 93 101 93 431 0.217
cgi gen 259 250 260 734 0.352
varargs gen 16 16 15 29 0.563
control_flow gen 134 177 136 147 0.910

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 0 8 0.000
loops gen 0 0 2 6 0.000
tuple_return_value gen 0 1 1 8 0.000
modules gen 1 1 1 8 0.089
classes gen 1 1 2 10 0.092
files gen 1 1 3 9 0.108
asdl_generated gen 1 2 1 7 0.142
parse gen 1 4 5 6 0.163
fib_recursive gen 2 0 1 11 0.164
scoped_resource gen 2 2 2 10 0.203
fib_iter gen 2 1 0 8 0.253
containers gen 8 6 7 30 0.269
control_flow gen 2 1 0 7 0.285
cgi gen 2 1 3 7 0.286
length gen 2 5 7 6 0.334
escape gen 5 4 4 14 0.359
varargs gen 22 22 24 28 0.802
cartesian gen 5 3 7 6 0.825

raw benchmark files