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 1 14 0.000
modules gen 1 0 1 242 0.003
loops gen 2 2 3 358 0.005
fib_recursive gen 6 5 6 1,139 0.006
fib_iter gen 6 6 5 954 0.006
asdl_generated gen 9 7 8 510 0.018
scoped_resource gen 25 27 29 1,383 0.018
parse gen 23 27 24 959 0.023
classes gen 1 3 3 35 0.025
files gen 5 7 7 96 0.050
tuple_return_value gen 13 14 14 258 0.051
containers gen 8 8 7 118 0.066
length gen 34 33 37 239 0.143
cartesian gen 71 73 72 388 0.183
escape gen 92 103 94 432 0.214
cgi gen 258 237 261 729 0.355
varargs gen 15 27 14 26 0.570
control_flow gen 135 178 133 145 0.932

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.3 4.5 11.3 0.39
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
modules gen 3.4 3.7 3.7 7.7 0.44
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.4 7.7 0.46
loops gen 3.5 3.7 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.4 3.5 7.6 0.47
gc_stack_roots gen 3.5 3.4 3.3 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.5 3.7 3.8 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
length gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.7 0.49
files gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.5 28.5 28.4 48.2 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
control_flow gen 0 1 2 7 0.000
fib_recursive gen 0 2 0 7 0.000
modules gen 1 1 1 7 0.100
loops gen 1 1 0 7 0.121
asdl_generated gen 1 3 2 8 0.125
fib_iter gen 1 1 2 7 0.144
containers gen 6 6 7 32 0.183
files gen 2 0 0 10 0.194
gc_stack_roots gen 1 0 1 7 0.207
cgi gen 2 3 1 8 0.250
tuple_return_value gen 2 2 1 8 0.251
classes gen 2 0 0 7 0.253
parse gen 3 1 2 8 0.367
cartesian gen 4 7 4 9 0.446
length gen 4 4 2 6 0.670
escape gen 5 3 4 6 0.828
scoped_resource gen 5 4 2 6 0.842
varargs gen 25 12 24 29 0.851

raw benchmark files