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 232 0.000
loops gen 1 3 2 363 0.002
fib_recursive gen 5 6 4 1,111 0.005
fib_iter gen 5 7 6 945 0.005
asdl_generated gen 9 7 8 511 0.017
scoped_resource gen 29 29 28 1,387 0.021
parse gen 24 25 22 946 0.026
containers gen 6 7 7 124 0.046
files gen 6 6 6 101 0.057
tuple_return_value gen 15 15 13 244 0.061
classes gen 3 0 2 34 0.079
gc_stack_roots gen 1 1 0 13 0.108
length gen 37 33 35 239 0.153
cartesian gen 66 74 69 400 0.165
escape gen 93 100 94 431 0.216
cgi gen 256 248 256 737 0.347
varargs gen 17 19 16 20 0.833
control_flow gen 132 184 133 146 0.900

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.5 11.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.5 3.5 3.7 7.7 0.46
gc_stack_roots gen 3.5 3.4 3.3 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
length gen 3.7 3.7 3.5 7.7 0.47
scoped_resource gen 3.7 3.5 3.5 7.7 0.47
cgi gen 3.7 3.5 3.5 7.6 0.48
fib_recursive gen 3.7 3.5 3.4 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.6 28.3 48.2 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 3 1 9 0.000
gc_stack_roots gen 0 0 1 8 0.000
tuple_return_value gen 0 2 2 10 0.000
parse gen 1 2 3 10 0.102
asdl_generated gen 1 3 2 8 0.123
scoped_resource gen 1 2 2 8 0.128
fib_recursive gen 1 0 2 8 0.129
files gen 1 1 1 5 0.191
loops gen 2 0 1 8 0.208
fib_iter gen 2 0 1 9 0.223
length gen 2 4 4 8 0.248
containers gen 8 8 7 26 0.294
cgi gen 3 3 4 9 0.334
modules gen 1 1 0 4 0.343
varargs gen 22 20 23 36 0.599
control_flow gen 4 0 2 6 0.664
escape gen 5 4 4 7 0.714
cartesian gen 9 6 6 8 1.125

raw benchmark files