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
loops gen 1 3 3 361 0.002
fib_recursive gen 4 5 6 1,102 0.004
fib_iter gen 6 7 6 982 0.006
modules gen 1 1 0 231 0.006
scoped_resource gen 23 29 29 1,393 0.016
asdl_generated gen 9 6 9 513 0.018
parse gen 23 27 23 951 0.025
classes gen 1 1 1 35 0.026
containers gen 4 7 7 130 0.030
tuple_return_value gen 14 14 14 250 0.055
files gen 6 5 6 104 0.056
gc_stack_roots gen 1 0 0 14 0.099
length gen 29 31 34 262 0.112
cartesian gen 65 72 66 417 0.156
escape gen 94 103 96 416 0.227
cgi gen 258 250 257 763 0.339
varargs gen 13 12 15 29 0.451
control_flow gen 134 175 139 150 0.897

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.2 4.2 12.3 0.36
gc_stack_roots gen 3.4 3.4 3.4 8.5 0.40
asdl_generated gen 3.4 3.4 3.4 8.4 0.41
cartesian gen 3.5 3.5 3.5 8.5 0.42
fib_iter gen 3.5 3.5 3.5 8.5 0.42
cgi gen 3.5 3.5 3.4 8.4 0.42
escape gen 3.5 3.4 3.4 8.4 0.42
loops gen 3.5 3.5 3.5 8.4 0.42
modules gen 3.5 3.5 3.7 8.4 0.42
scoped_resource gen 3.5 3.5 3.5 8.4 0.42
control_flow gen 3.7 3.8 3.8 8.5 0.43
fib_recursive gen 3.7 3.5 3.7 8.5 0.43
parse gen 3.8 3.8 3.8 8.7 0.44
length gen 3.7 3.5 3.7 8.3 0.44
tuple_return_value gen 3.8 3.7 3.7 8.5 0.45
files gen 3.8 3.8 3.7 8.4 0.45
containers gen 28.5 28.5 28.5 49.0 0.58
varargs gen 5.5 5.5 5.5 8.3 0.67

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 1 1 12 0.000
modules gen 0 0 1 12 0.000
files gen 1 2 1 12 0.081
tuple_return_value gen 1 3 1 9 0.109
asdl_generated gen 1 4 1 9 0.111
parse gen 2 0 2 16 0.127
classes gen 2 2 2 14 0.132
loops gen 2 0 0 12 0.145
cgi gen 2 3 3 10 0.200
fib_recursive gen 2 1 0 7 0.257
control_flow gen 3 4 2 9 0.332
fib_iter gen 1 0 1 3 0.341
containers gen 11 8 7 28 0.378
escape gen 4 3 3 7 0.573
scoped_resource gen 7 2 1 11 0.632
varargs gen 25 26 23 32 0.786
length gen 9 6 5 11 0.802
cartesian gen 10 8 9 9 1.110

raw benchmark files