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 0 10 0.000
loops gen 1 2 2 363 0.002
fib_recursive gen 6 6 6 1,116 0.005
modules gen 2 0 1 236 0.006
fib_iter gen 6 6 7 959 0.006
asdl_generated gen 8 8 8 521 0.016
scoped_resource gen 23 31 24 1,344 0.017
containers gen 3 7 6 128 0.023
parse gen 23 26 22 956 0.024
tuple_return_value gen 12 16 15 249 0.050
classes gen 2 1 2 35 0.053
files gen 7 6 6 103 0.071
length gen 35 35 36 242 0.144
cartesian gen 74 73 70 397 0.185
escape gen 98 99 97 432 0.228
cgi gen 258 251 260 726 0.355
varargs gen 13 14 17 25 0.526
control_flow gen 137 180 135 148 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.5 4.5 11.5 0.38
cgi gen 3.4 3.4 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
parse gen 3.7 3.8 3.8 8.1 0.45
length gen 3.5 3.4 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 48.4 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
control_flow gen 0 2 1 8 0.000
files gen 0 1 1 5 0.000
modules gen 0 1 0 9 0.000
classes gen 1 2 1 10 0.092
fib_recursive gen 1 0 0 10 0.092
fib_iter gen 1 1 0 8 0.127
gc_stack_roots gen 1 1 1 11 0.129
loops gen 2 1 1 11 0.157
cartesian gen 2 7 4 9 0.224
parse gen 3 1 4 12 0.249
asdl_generated gen 2 2 3 7 0.301
tuple_return_value gen 3 1 1 9 0.318
containers gen 11 7 8 30 0.363
escape gen 3 8 7 8 0.377
cgi gen 4 2 2 7 0.570
length gen 4 2 3 6 0.664
varargs gen 26 26 22 32 0.821
scoped_resource gen 7 2 7 6 1.168

raw benchmark files