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 0 14 0.000
fib_recursive gen 5 6 5 1,022 0.004
modules gen 1 1 1 202 0.006
loops gen 2 2 1 308 0.007
fib_iter gen 6 6 6 739 0.007
asdl_generated gen 7 10 10 505 0.015
scoped_resource gen 29 29 30 1,225 0.024
parse gen 23 25 23 908 0.025
containers gen 4 4 8 106 0.039
classes gen 2 2 2 28 0.054
tuple_return_value gen 14 16 13 216 0.063
files gen 6 6 4 92 0.067
length gen 29 31 31 221 0.132
cartesian gen 64 73 65 364 0.176
escape gen 84 94 86 378 0.224
cgi gen 185 176 185 660 0.280
varargs gen 17 14 14 22 0.782
control_flow gen 124 168 123 141 0.882

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
gc_stack_roots gen 3.4 3.4 3.5 7.9 0.43
escape gen 3.4 3.4 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.8 3.9 3.9 8.3 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
scoped_resource gen 3.7 3.5 3.7 7.7 0.47
length gen 3.7 3.7 3.8 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.9 7.7 0.49
control_flow gen 3.8 3.7 3.9 7.6 0.50
files gen 3.9 3.9 3.8 7.9 0.50
containers gen 28.4 28.7 28.7 48.1 0.59
varargs gen 5.5 5.5 5.6 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
files gen 0 0 2 3 0.000
loops gen 0 1 1 9 0.000
modules gen 0 0 0 9 0.000
classes gen 1 1 0 11 0.069
gc_stack_roots gen 1 0 1 11 0.101
parse gen 1 1 1 8 0.125
tuple_return_value gen 1 0 1 6 0.162
escape gen 1 1 0 6 0.167
fib_iter gen 1 0 0 5 0.184
containers gen 8 9 5 27 0.305
fib_recursive gen 1 0 1 3 0.306
scoped_resource gen 1 2 0 3 0.331
control_flow gen 1 0 3 3 0.334
asdl_generated gen 2 0 0 5 0.427
length gen 3 1 2 7 0.432
varargs gen 8 10 10 15 0.540
cgi gen 1 2 1 1 1.002
cartesian gen 4 2 5 3 1.318

raw benchmark files