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 12 0.000
loops gen 1 1 1 360 0.002
fib_recursive gen 6 5 5 1,089 0.006
modules gen 1 1 1 236 0.006
fib_iter gen 7 5 4 977 0.007
asdl_generated gen 10 8 8 526 0.019
scoped_resource gen 30 30 30 1,396 0.021
classes gen 1 2 2 37 0.024
parse gen 24 23 23 942 0.026
containers gen 6 6 5 128 0.046
tuple_return_value gen 13 14 14 251 0.052
files gen 6 4 7 100 0.061
length gen 37 35 35 237 0.156
cartesian gen 68 72 69 394 0.173
escape gen 94 101 91 428 0.220
cgi gen 253 250 258 749 0.338
varargs gen 21 15 18 33 0.630
control_flow gen 137 178 133 144 0.951

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.3 11.5 0.39
cgi gen 3.3 3.4 3.5 7.6 0.43
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.3 7.6 0.45
modules gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.5 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.5 28.7 48.2 0.59
varargs gen 5.5 5.6 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 2 2 6 0.000
fib_iter gen 0 2 3 8 0.000
fib_recursive gen 0 1 1 8 0.000
modules gen 0 1 1 7 0.000
scoped_resource gen 0 2 1 9 0.000
length gen 1 1 4 11 0.091
cgi gen 1 1 3 10 0.100
parse gen 1 3 2 10 0.102
control_flow gen 1 1 2 9 0.111
files gen 1 3 0 7 0.145
gc_stack_roots gen 1 1 0 9 0.153
loops gen 2 2 2 8 0.214
classes gen 2 1 1 7 0.251
containers gen 8 9 9 25 0.314
escape gen 4 4 7 10 0.396
tuple_return_value gen 2 2 1 5 0.400
cartesian gen 7 8 6 10 0.700
varargs gen 17 23 21 23 0.732

raw benchmark files