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 13 0.000
modules gen 1 1 0 209 0.003
loops gen 1 2 2 314 0.004
fib_recursive gen 5 5 6 1,006 0.005
fib_iter gen 5 7 6 743 0.007
asdl_generated gen 10 9 9 518 0.019
scoped_resource gen 27 31 26 1,225 0.022
parse gen 23 26 22 909 0.025
classes gen 1 2 0 30 0.040
containers gen 6 4 6 130 0.048
tuple_return_value gen 14 14 13 222 0.061
files gen 6 5 5 92 0.068
length gen 31 33 33 232 0.136
cartesian gen 68 73 65 358 0.190
escape gen 83 93 87 384 0.216
cgi gen 185 176 186 661 0.280
varargs gen 15 11 18 30 0.480
control_flow gen 124 170 128 134 0.927

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.6 0.37
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.5 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.9 0.45
loops gen 3.5 3.7 3.8 7.9 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.5 0.47
fib_iter gen 3.7 3.8 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
files gen 3.7 3.8 3.9 7.7 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 7.9 0.48
control_flow gen 3.7 3.8 3.8 7.6 0.48
modules gen 3.8 3.5 3.7 7.7 0.49
containers gen 28.5 28.8 28.6 48.4 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 1 4 0.000
files gen 0 1 1 5 0.000
modules gen 1 0 1 6 0.103
classes gen 1 1 2 9 0.135
fib_recursive gen 1 0 0 7 0.136
length gen 1 0 0 4 0.254
fib_iter gen 1 0 0 3 0.297
gc_stack_roots gen 1 0 0 4 0.300
tuple_return_value gen 1 2 1 3 0.323
cartesian gen 1 2 4 3 0.333
parse gen 1 1 2 3 0.333
control_flow gen 2 2 0 6 0.334
scoped_resource gen 3 0 3 8 0.384
cgi gen 1 2 0 2 0.500
containers gen 8 11 9 15 0.545
loops gen 1 1 0 2 0.614
varargs gen 10 13 6 8 1.199
escape gen 3 2 3 2 1.502

raw benchmark files