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 0 0 1 245 0.000
loops gen 2 3 2 362 0.005
fib_recursive gen 5 6 5 1,104 0.005
fib_iter gen 6 7 5 970 0.006
asdl_generated gen 7 7 10 527 0.013
scoped_resource gen 26 27 27 1,363 0.019
parse gen 21 24 24 959 0.021
classes gen 1 2 1 36 0.024
containers gen 4 6 5 124 0.033
tuple_return_value gen 12 15 11 245 0.049
files gen 7 6 6 100 0.067
gc_stack_roots gen 1 1 0 10 0.068
length gen 35 35 34 244 0.143
cartesian gen 70 72 67 390 0.178
escape gen 94 100 95 442 0.213
cgi gen 257 251 258 726 0.354
varargs gen 17 16 13 24 0.701
control_flow gen 132 179 133 145 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.3 4.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.3 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.4 7.6 0.47
tuple_return_value gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
fib_iter gen 3.7 3.7 3.4 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.6 28.5 28.7 48.4 0.59
varargs gen 5.4 5.5 5.4 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
files gen 0 1 1 7 0.000
gc_stack_roots gen 1 0 1 12 0.057
fib_iter gen 1 0 2 11 0.093
loops gen 1 0 0 6 0.138
fib_recursive gen 1 0 1 6 0.172
classes gen 2 1 2 8 0.218
cgi gen 3 2 3 9 0.333
control_flow gen 3 0 2 9 0.335
scoped_resource gen 4 4 3 11 0.355
containers gen 9 8 8 24 0.387
tuple_return_value gen 3 2 4 7 0.428
modules gen 1 1 0 3 0.454
asdl_generated gen 3 3 0 6 0.494
varargs gen 22 23 26 31 0.702
parse gen 5 3 1 5 0.979
escape gen 4 4 4 4 0.993
cartesian gen 6 8 7 6 0.994
length gen 3 2 4 3 0.995

raw benchmark files