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 1 0 234 0.000
fib_recursive gen 6 4 5 1,084 0.006
fib_iter gen 6 6 6 965 0.006
loops gen 3 3 1 357 0.007
scoped_resource gen 26 28 29 1,370 0.019
asdl_generated gen 10 9 7 516 0.019
parse gen 22 25 23 971 0.023
containers gen 4 6 7 131 0.029
gc_stack_roots gen 1 0 0 15 0.045
files gen 5 7 6 98 0.050
tuple_return_value gen 13 15 14 243 0.053
classes gen 2 3 1 32 0.055
length gen 34 32 33 241 0.143
cartesian gen 74 73 72 388 0.191
escape gen 96 96 95 428 0.225
cgi gen 255 251 257 729 0.350
varargs gen 20 16 12 25 0.793
control_flow gen 135 178 133 148 0.917

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.2 4.3 4.3 11.5 0.37
escape gen 3.4 3.5 3.5 7.9 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
fib_iter gen 3.4 3.5 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.7 3.9 8.0 0.47
length gen 3.7 3.7 3.4 7.6 0.48
modules 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.7 7.6 0.50
tuple_return_value gen 3.8 3.5 3.7 7.6 0.50
containers gen 28.5 28.5 28.3 48.4 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 3 5 0.000
control_flow gen 0 2 2 9 0.000
fib_recursive gen 0 2 1 6 0.000
loops gen 0 0 2 8 0.000
classes gen 1 0 2 12 0.073
cartesian gen 1 7 3 8 0.125
modules gen 1 0 1 10 0.139
gc_stack_roots gen 1 1 1 5 0.145
files gen 2 0 1 9 0.217
tuple_return_value gen 2 2 1 8 0.249
escape gen 3 7 3 12 0.251
fib_iter gen 1 1 1 4 0.253
parse gen 3 3 4 8 0.378
scoped_resource gen 4 5 1 10 0.395
containers gen 10 9 6 20 0.482
varargs gen 18 22 27 30 0.595
length gen 4 4 6 6 0.674
cgi gen 6 1 5 7 0.857

raw benchmark files