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 1 0 239 0.003
loops gen 2 1 1 357 0.005
fib_recursive gen 6 4 6 1,110 0.006
fib_iter gen 7 6 7 970 0.007
asdl_generated gen 9 7 10 513 0.017
scoped_resource gen 25 31 28 1,376 0.018
parse gen 21 24 22 964 0.022
containers gen 7 4 6 127 0.054
classes gen 2 3 3 32 0.057
tuple_return_value gen 15 14 14 244 0.061
files gen 7 5 6 100 0.067
length gen 31 30 35 250 0.124
gc_stack_roots gen 1 1 1 10 0.137
cartesian gen 73 72 67 396 0.184
escape gen 94 99 87 431 0.217
cgi gen 262 249 257 740 0.354
varargs gen 16 17 19 32 0.490
control_flow gen 133 177 133 147 0.907

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.4 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
fib_iter gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
loops gen 3.4 3.8 3.7 7.6 0.45
cgi gen 3.4 3.5 3.5 7.5 0.46
cartesian gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 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.9 8.1 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
files gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 0 7 0.000
fib_recursive gen 0 2 0 9 0.000
files gen 0 2 1 7 0.000
gc_stack_roots gen 0 0 0 10 0.000
tuple_return_value gen 0 3 1 10 0.000
classes gen 1 0 0 11 0.083
loops gen 1 2 2 8 0.106
asdl_generated gen 1 3 0 7 0.142
modules gen 1 0 1 5 0.146
cgi gen 1 3 3 6 0.167
containers gen 7 10 7 30 0.227
control_flow gen 3 2 3 10 0.299
cartesian gen 3 8 8 9 0.334
parse gen 4 3 3 12 0.339
escape gen 3 4 12 6 0.503
scoped_resource gen 5 1 2 6 0.826
varargs gen 23 22 19 24 0.939
length gen 7 6 3 6 1.171

raw benchmark files