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 1 1 0 233 0.003
fib_recursive gen 6 5 4 1,077 0.006
fib_iter gen 6 7 6 961 0.006
loops gen 3 2 3 362 0.007
asdl_generated gen 7 8 10 522 0.014
scoped_resource gen 29 30 27 1,346 0.021
parse gen 24 22 24 966 0.025
containers gen 6 8 5 130 0.044
files gen 5 5 6 96 0.051
tuple_return_value gen 13 16 14 247 0.054
classes gen 3 3 2 34 0.080
gc_stack_roots gen 1 0 0 11 0.127
length gen 33 34 37 249 0.132
cartesian gen 69 79 70 439 0.158
escape gen 91 101 92 443 0.206
cgi gen 259 249 261 743 0.348
varargs gen 14 20 18 35 0.409
control_flow gen 134 175 134 146 0.916

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.3 4.5 11.5 0.38
gc_stack_roots gen 3.3 3.3 3.3 7.7 0.42
asdl_generated gen 3.3 3.3 3.3 7.6 0.43
cgi gen 3.5 3.4 3.5 7.7 0.46
length gen 3.5 3.5 3.4 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.5 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.8 3.8 3.7 7.7 0.49
parse gen 3.9 3.7 3.9 8.0 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.6 5.5 5.5 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 0 1 9 0.000
fib_recursive gen 0 1 2 10 0.000
gc_stack_roots gen 0 1 1 10 0.000
loops gen 0 2 0 10 0.000
modules gen 1 1 1 8 0.093
fib_iter gen 1 0 1 9 0.113
scoped_resource gen 2 2 3 13 0.153
files gen 2 2 1 11 0.178
tuple_return_value gen 2 1 1 10 0.204
control_flow gen 2 4 2 7 0.285
parse gen 2 5 1 7 0.285
containers gen 8 6 9 24 0.320
asdl_generated gen 3 2 0 5 0.610
cgi gen 2 4 4 3 0.666
cartesian gen 6 1 5 5 1.184
length gen 6 3 2 5 1.191
escape gen 6 5 5 5 1.199
varargs gen 26 19 21 21 1.217

raw benchmark files