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
fib_recursive gen 4 5 4 1,131 0.004
loops gen 2 3 3 403 0.004
fib_iter gen 5 6 5 959 0.005
modules gen 1 1 1 237 0.006
asdl_generated gen 9 9 9 525 0.017
scoped_resource gen 28 28 30 1,341 0.021
parse gen 21 25 21 969 0.022
containers gen 6 4 7 141 0.043
tuple_return_value gen 14 15 14 251 0.056
files gen 6 6 4 101 0.057
classes gen 2 1 2 34 0.058
gc_stack_roots gen 1 1 0 15 0.093
length gen 34 35 33 245 0.138
cartesian gen 73 69 65 397 0.183
escape gen 95 101 93 438 0.217
cgi gen 261 258 260 735 0.355
varargs gen 18 15 15 30 0.605
control_flow gen 151 194 152 152 0.991

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.5 4.3 11.5 0.38
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.7 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.5 3.7 3.8 7.6 0.47
parse gen 3.8 3.7 3.7 8.1 0.47
length gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.7 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.4 28.5 48.4 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
gc_stack_roots gen 0 0 1 6 0.000
modules gen 0 1 0 5 0.000
classes gen 1 2 1 12 0.082
loops gen 1 0 0 9 0.094
files gen 1 1 3 7 0.138
control_flow gen 1 1 0 7 0.143
asdl_generated gen 1 1 1 6 0.165
tuple_return_value gen 1 2 1 6 0.167
cartesian gen 3 12 10 12 0.249
fib_recursive gen 2 1 2 7 0.254
fib_iter gen 2 1 2 7 0.287
containers gen 8 11 7 24 0.332
scoped_resource gen 2 3 2 5 0.397
escape gen 4 8 4 9 0.444
length gen 5 2 5 8 0.623
varargs gen 20 23 23 27 0.747
cgi gen 3 1 1 4 0.751
parse gen 5 2 5 4 1.242

raw benchmark files