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 0 1 238 0.000
loops gen 1 2 1 356 0.004
fib_recursive gen 6 5 5 1,099 0.006
fib_iter gen 6 6 6 949 0.006
asdl_generated gen 9 7 9 514 0.018
scoped_resource gen 28 29 25 1,404 0.020
parse gen 25 25 23 956 0.027
classes gen 1 2 2 34 0.027
containers gen 5 4 5 120 0.040
files gen 6 5 6 101 0.057
tuple_return_value gen 15 15 13 247 0.061
gc_stack_roots gen 1 1 0 13 0.100
length gen 36 37 32 247 0.148
cartesian gen 72 77 69 392 0.184
escape gen 95 100 91 433 0.220
cgi gen 257 249 252 721 0.357
varargs gen 19 17 20 32 0.601
control_flow gen 132 179 133 145 0.910

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.5 0.38
asdl_generated gen 3.3 3.4 3.3 7.7 0.42
fib_recursive gen 3.4 3.7 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.4 3.4 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
tuple_return_value gen 3.5 3.7 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
length gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.8 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 1 7 0.000
gc_stack_roots gen 0 1 1 7 0.000
parse gen 0 2 3 9 0.000
tuple_return_value gen 0 2 2 9 0.000
fib_iter gen 1 1 1 10 0.100
files gen 1 2 1 6 0.161
asdl_generated gen 1 3 1 5 0.202
scoped_resource gen 2 3 5 10 0.202
classes gen 2 1 1 9 0.203
loops gen 1 1 2 6 0.211
modules gen 1 1 0 6 0.238
containers gen 9 10 9 31 0.278
length gen 2 0 5 7 0.281
control_flow gen 2 1 2 6 0.335
escape gen 3 4 6 8 0.373
cgi gen 3 4 7 8 0.375
cartesian gen 5 3 6 8 0.628
varargs gen 18 21 18 23 0.792

raw benchmark files