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 1 1 1 238 0.003
loops gen 2 1 1 368 0.005
fib_recursive gen 5 6 6 1,092 0.005
fib_iter gen 6 7 6 964 0.006
asdl_generated gen 6 7 8 513 0.012
scoped_resource gen 26 29 28 1,402 0.019
parse gen 22 24 23 950 0.024
classes gen 1 2 1 34 0.027
containers gen 5 9 9 117 0.044
files gen 5 7 3 99 0.050
tuple_return_value gen 12 15 13 245 0.050
gc_stack_roots gen 1 1 0 17 0.083
length gen 33 31 38 239 0.137
cartesian gen 68 72 71 409 0.166
escape gen 94 97 94 428 0.220
cgi gen 261 246 259 729 0.358
varargs gen 19 13 20 30 0.627
control_flow gen 138 178 134 149 0.926

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
asdl_generated gen 3.3 3.3 3.4 7.7 0.42
cgi gen 3.4 3.5 3.7 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
escape gen 3.4 3.5 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.5 7.6 0.45
modules gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.7 28.4 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 1 4 0.000
loops gen 1 2 2 12 0.072
modules gen 1 1 1 10 0.073
fib_recursive gen 1 0 0 11 0.095
control_flow gen 1 1 2 7 0.143
classes gen 2 1 2 11 0.167
fib_iter gen 1 0 1 5 0.204
files gen 2 0 4 9 0.220
tuple_return_value gen 3 2 2 11 0.257
containers gen 9 6 5 36 0.259
cgi gen 2 5 2 6 0.333
escape gen 3 9 3 9 0.335
scoped_resource gen 4 3 2 10 0.401
parse gen 3 3 3 7 0.436
asdl_generated gen 4 3 2 7 0.567
length gen 6 6 1 9 0.663
varargs gen 20 26 18 28 0.707
cartesian gen 8 9 4 6 1.334

raw benchmark files