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
gc_stack_roots gen 0 1 1 13 0.000
modules gen 0 1 0 239 0.000
fib_recursive gen 4 4 5 1,096 0.004
fib_iter gen 5 6 7 970 0.006
loops gen 3 4 1 372 0.007
asdl_generated gen 9 7 8 516 0.018
scoped_resource gen 29 28 28 1,413 0.020
parse gen 24 25 23 971 0.025
containers gen 5 6 7 132 0.040
tuple_return_value gen 14 15 13 248 0.057
files gen 6 7 6 100 0.059
classes gen 3 1 1 39 0.073
cartesian gen 68 73 67 493 0.138
length gen 35 36 32 240 0.145
escape gen 93 98 92 429 0.217
cgi gen 257 248 251 766 0.335
varargs gen 19 18 15 29 0.642
control_flow gen 135 177 133 146 0.923

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.6 0.37
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
escape gen 3.4 3.5 3.5 7.7 0.44
length gen 3.4 3.7 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cgi gen 3.5 3.4 3.4 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
modules gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
containers gen 28.5 28.5 28.6 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 2 6 0.000
loops gen 0 0 2 10 0.000
files gen 1 0 1 9 0.109
tuple_return_value gen 1 2 2 8 0.126
control_flow gen 1 3 2 7 0.143
fib_recursive gen 2 2 1 11 0.163
asdl_generated gen 1 3 2 6 0.169
gc_stack_roots gen 1 1 1 8 0.171
modules gen 1 0 2 7 0.205
parse gen 2 2 3 9 0.223
fib_iter gen 2 1 0 8 0.224
escape gen 5 6 7 12 0.418
containers gen 8 9 6 20 0.421
length gen 4 1 7 8 0.498
scoped_resource gen 2 4 2 4 0.509
cgi gen 3 5 3 5 0.600
varargs gen 20 21 24 29 0.676
cartesian gen 8 7 8 10 0.798

raw benchmark files