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
fib_recursive gen 5 5 5 1,091 0.005
modules gen 1 0 1 235 0.006
loops gen 3 1 3 364 0.007
fib_iter gen 7 10 6 968 0.007
scoped_resource gen 28 31 28 1,388 0.020
asdl_generated gen 10 8 9 505 0.020
parse gen 23 26 24 956 0.024
classes gen 1 2 1 33 0.040
gc_stack_roots gen 1 1 1 17 0.040
tuple_return_value gen 12 15 14 246 0.049
files gen 5 6 6 98 0.049
containers gen 6 4 5 118 0.050
length gen 35 33 35 242 0.144
cartesian gen 70 70 69 389 0.180
escape gen 94 100 92 428 0.220
cgi gen 260 251 262 721 0.361
varargs gen 19 20 17 29 0.659
control_flow gen 134 177 135 145 0.930

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 2 1 8 0.000
cgi gen 0 1 1 9 0.000
fib_iter gen 0 0 1 8 0.000
loops gen 0 2 0 6 0.000
modules gen 0 1 1 10 0.000
fib_recursive gen 1 1 1 9 0.100
control_flow gen 1 2 1 8 0.125
classes gen 1 1 2 10 0.133
gc_stack_roots gen 1 0 0 3 0.229
files gen 2 1 1 8 0.243
containers gen 8 10 9 31 0.251
parse gen 2 1 1 7 0.290
tuple_return_value gen 3 2 1 9 0.334
scoped_resource gen 3 2 2 7 0.421
length gen 4 4 4 6 0.665
varargs gen 19 19 22 27 0.707
cartesian gen 5 10 6 7 0.716
escape gen 5 4 6 6 0.826

raw benchmark files