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 1 0 243 0.000
loops gen 2 1 3 368 0.005
fib_recursive gen 5 6 6 1,106 0.005
fib_iter gen 7 6 6 962 0.007
asdl_generated gen 9 7 8 523 0.017
scoped_resource gen 28 28 25 1,343 0.021
parse gen 22 26 23 944 0.024
classes gen 1 0 1 33 0.026
containers gen 5 5 6 124 0.038
tuple_return_value gen 12 14 15 246 0.047
files gen 7 7 5 98 0.071
gc_stack_roots gen 1 1 1 11 0.126
length gen 33 31 34 243 0.137
cartesian gen 67 77 71 392 0.172
escape gen 93 101 91 431 0.217
cgi gen 244 251 259 726 0.337
varargs gen 16 15 18 22 0.732
control_flow gen 133 184 134 154 0.864

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.3 11.4 0.38
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.7 0.44
cgi gen 3.4 3.5 3.4 7.7 0.44
fib_iter gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.4 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
length gen 3.7 3.5 3.7 7.7 0.47
files 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
parse gen 3.9 3.9 3.8 8.0 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.4 28.5 28.5 48.4 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
fib_iter gen 0 1 1 4 0.000
files gen 0 0 2 9 0.000
gc_stack_roots gen 0 0 0 9 0.000
fib_recursive gen 1 0 0 9 0.116
classes gen 2 3 2 9 0.194
scoped_resource gen 2 3 5 9 0.225
loops gen 1 2 0 3 0.278
containers gen 9 9 8 26 0.327
control_flow gen 2 0 2 6 0.333
modules gen 1 0 1 4 0.348
parse gen 3 1 3 8 0.381
tuple_return_value gen 3 2 0 8 0.396
asdl_generated gen 1 3 2 2 0.494
cgi gen 4 1 1 8 0.499
varargs gen 22 24 20 34 0.651
length gen 5 5 4 7 0.697
escape gen 5 4 7 7 0.717
cartesian gen 8 3 5 8 1.004

raw benchmark files