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 16 0.000
modules gen 0 1 0 237 0.000
loops gen 1 2 2 361 0.003
fib_recursive gen 5 4 6 1,148 0.005
fib_iter gen 5 7 5 958 0.006
asdl_generated gen 7 9 9 524 0.013
scoped_resource gen 27 27 26 1,422 0.019
parse gen 24 25 23 946 0.026
containers gen 5 6 3 120 0.041
tuple_return_value gen 12 14 12 248 0.048
files gen 5 6 5 101 0.049
classes gen 3 2 1 32 0.083
length gen 34 28 33 240 0.140
cartesian gen 66 74 71 397 0.165
escape gen 94 100 90 433 0.217
cgi gen 253 249 260 723 0.350
varargs gen 19 21 23 29 0.655
control_flow gen 134 176 134 146 0.915

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 11 0.000
parse gen 1 2 2 10 0.102
fib_recursive gen 1 2 0 8 0.129
modules gen 1 0 1 8 0.176
fib_iter gen 2 0 2 9 0.196
control_flow gen 2 2 2 8 0.249
loops gen 1 1 1 5 0.252
containers gen 9 8 11 33 0.267
files gen 2 1 2 7 0.282
gc_stack_roots gen 1 1 0 4 0.340
asdl_generated gen 3 1 1 8 0.411
scoped_resource gen 3 5 4 7 0.428
tuple_return_value gen 3 3 3 7 0.429
cgi gen 4 2 0 9 0.444
length gen 5 9 5 8 0.617
varargs gen 20 18 15 27 0.740
escape gen 4 5 8 5 0.799
cartesian gen 8 6 5 8 0.993

raw benchmark files