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 0 1 13 0.000
modules gen 0 0 1 214 0.000
loops gen 1 1 2 315 0.004
fib_recursive gen 5 6 5 1,014 0.005
fib_iter gen 5 7 7 741 0.007
asdl_generated gen 7 8 8 513 0.013
scoped_resource gen 27 31 28 1,221 0.022
parse gen 22 23 23 902 0.024
classes gen 1 1 1 31 0.026
files gen 4 5 5 92 0.045
tuple_return_value gen 13 15 14 217 0.062
containers gen 8 7 6 118 0.068
length gen 31 30 31 225 0.139
cartesian gen 65 72 67 361 0.179
escape gen 82 93 83 390 0.210
cgi gen 184 177 186 663 0.277
varargs gen 10 12 15 23 0.425
control_flow gen 126 168 123 135 0.928

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.3 11.5 0.39
asdl_generated gen 3.4 3.4 3.5 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.5 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.9 0.45
parse gen 3.8 3.8 3.8 8.1 0.47
cgi gen 3.7 3.5 3.5 7.7 0.47
control_flow gen 3.7 3.9 3.8 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
length gen 3.7 3.7 3.7 7.7 0.47
scoped_resource gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.8 3.8 3.7 7.7 0.49
tuple_return_value gen 3.8 3.8 3.8 7.7 0.49
modules gen 3.8 3.7 3.8 7.6 0.50
files gen 3.9 3.7 3.9 7.7 0.51
containers gen 28.5 28.6 28.7 48.2 0.59
varargs gen 5.6 5.8 5.5 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 0 2 7 0.000
fib_iter gen 1 0 0 7 0.130
tuple_return_value gen 1 1 0 7 0.148
classes gen 2 2 1 8 0.202
gc_stack_roots gen 1 1 1 4 0.284
parse gen 2 3 1 7 0.285
fib_recursive gen 1 0 1 3 0.308
modules gen 1 1 0 4 0.310
length gen 1 2 2 3 0.336
containers gen 6 7 8 18 0.338
asdl_generated gen 3 2 2 8 0.360
loops gen 1 2 0 3 0.391
cartesian gen 4 3 3 6 0.675
files gen 2 1 1 3 0.684
cgi gen 3 2 0 4 0.748
scoped_resource gen 4 1 2 5 0.779
escape gen 4 2 2 5 0.801
varargs gen 15 13 10 13 1.128

raw benchmark files