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 0 1 11 0.000
modules gen 0 1 1 211 0.000
loops gen 1 2 2 308 0.003
fib_recursive gen 4 5 4 989 0.004
fib_iter gen 5 6 6 739 0.007
asdl_generated gen 8 9 9 515 0.016
scoped_resource gen 26 31 30 1,224 0.022
parse gen 22 25 24 899 0.024
containers gen 4 4 6 114 0.034
classes gen 1 2 1 31 0.035
files gen 4 6 5 95 0.042
tuple_return_value gen 13 15 14 225 0.059
length gen 31 30 31 227 0.137
cartesian gen 63 72 66 362 0.175
escape gen 83 92 84 378 0.220
cgi gen 184 175 183 655 0.281
varargs gen 9 14 14 21 0.428
control_flow gen 125 167 124 144 0.865

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.5 4.5 11.6 0.38
gc_stack_roots gen 3.4 3.4 3.3 7.9 0.43
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.8 3.9 3.9 8.3 0.46
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
cartesian gen 3.5 3.5 3.4 7.5 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.9 7.7 0.47
escape gen 3.7 3.7 3.5 7.6 0.48
scoped_resource gen 3.7 3.7 3.4 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.9 0.48
modules gen 3.8 3.7 3.7 7.7 0.49
files gen 3.8 3.8 3.7 7.6 0.50
length gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.7 28.3 48.2 0.59
varargs gen 5.5 5.5 5.6 7.9 0.70

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 1 0 1 6 0.182
loops gen 1 1 0 5 0.208
gc_stack_roots gen 1 1 0 5 0.223
control_flow gen 1 1 1 4 0.249
length gen 1 2 1 4 0.250
modules gen 1 0 0 4 0.269
escape gen 2 2 1 7 0.286
tuple_return_value gen 1 1 0 3 0.341
fib_iter gen 1 1 0 3 0.344
fib_recursive gen 2 0 2 5 0.360
parse gen 2 1 0 5 0.397
cgi gen 2 3 2 4 0.500
asdl_generated gen 1 1 0 2 0.522
containers gen 9 9 5 16 0.546
scoped_resource gen 3 0 0 4 0.761
varargs gen 15 10 10 15 0.998
files gen 2 0 1 1 1.995
cartesian gen 5 5 2 1 5.037

raw benchmark files