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
loops gen 1 3 1 360 0.002
fib_recursive gen 5 4 6 1,095 0.005
modules gen 1 1 1 228 0.006
fib_iter gen 6 6 6 962 0.006
asdl_generated gen 7 9 8 520 0.013
scoped_resource gen 27 28 28 1,340 0.021
parse gen 24 26 23 937 0.025
containers gen 5 6 4 134 0.036
gc_stack_roots gen 1 0 1 13 0.054
classes gen 2 2 0 32 0.055
files gen 6 6 7 103 0.056
tuple_return_value gen 14 15 15 247 0.057
length gen 34 34 37 239 0.141
cartesian gen 65 74 66 396 0.164
escape gen 91 100 93 419 0.216
cgi gen 259 246 257 721 0.359
varargs gen 19 17 17 27 0.698
control_flow gen 134 178 134 144 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.3 4.3 4.5 11.5 0.38
gc_stack_roots gen 3.3 3.3 3.4 7.7 0.42
cartesian gen 3.4 3.4 3.5 7.7 0.44
escape gen 3.4 3.5 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
loops gen 3.4 3.7 3.7 7.6 0.45
cgi gen 3.5 3.4 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.7 3.5 3.4 7.7 0.47
parse gen 3.8 3.7 3.9 8.0 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.7 3.4 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.4 5.5 5.4 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 1 0 10 0.000
gc_stack_roots gen 1 1 1 8 0.088
classes gen 1 1 3 10 0.088
tuple_return_value gen 1 1 0 9 0.111
fib_recursive gen 1 2 0 9 0.115
control_flow gen 1 1 2 8 0.125
fib_iter gen 1 1 1 7 0.143
loops gen 2 0 2 10 0.168
parse gen 2 1 2 12 0.171
files gen 1 1 0 5 0.194
asdl_generated gen 3 1 2 9 0.330
containers gen 9 8 9 22 0.399
cgi gen 3 5 3 6 0.499
scoped_resource gen 5 3 3 9 0.545
length gen 5 2 1 8 0.621
escape gen 6 6 3 9 0.665
varargs gen 19 22 22 28 0.673
cartesian gen 10 6 11 5 1.999

raw benchmark files