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 2 3 358 0.002
fib_recursive gen 6 6 5 1,111 0.006
modules gen 1 1 1 234 0.006
fib_iter gen 6 6 7 970 0.006
asdl_generated gen 7 8 8 501 0.014
scoped_resource gen 25 31 30 1,386 0.018
parse gen 22 25 29 949 0.023
classes gen 1 2 2 34 0.027
containers gen 7 10 5 124 0.055
tuple_return_value gen 14 16 14 244 0.057
files gen 7 6 6 99 0.068
gc_stack_roots gen 1 1 1 15 0.090
length gen 33 32 33 241 0.136
cartesian gen 68 75 70 396 0.171
escape gen 94 101 92 435 0.217
cgi gen 257 249 246 746 0.344
varargs gen 16 18 10 30 0.523
control_flow gen 130 178 134 142 0.916

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.5 4.5 11.6 0.38
cartesian gen 3.4 3.5 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.5 7.6 0.45
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
escape gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.7 3.4 3.4 7.7 0.47
length gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
loops gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 28.5 28.5 48.1 0.59
varargs gen 5.5 5.5 5.6 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 0 1 5 0.000
files gen 0 1 1 8 0.000
gc_stack_roots gen 0 0 1 5 0.000
modules gen 0 0 0 8 0.000
tuple_return_value gen 1 1 1 9 0.112
fib_iter gen 1 1 0 7 0.144
loops gen 2 1 0 9 0.188
classes gen 2 1 1 9 0.203
containers gen 7 5 8 28 0.244
cgi gen 3 2 2 9 0.334
asdl_generated gen 3 2 2 8 0.369
scoped_resource gen 5 1 1 12 0.409
control_flow gen 5 1 1 10 0.500
parse gen 4 2 2 7 0.559
length gen 6 5 6 10 0.598
escape gen 4 4 6 6 0.668
varargs gen 23 20 28 27 0.835
cartesian gen 7 3 5 6 1.176

raw benchmark files