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 16 0.000
modules gen 0 1 0 236 0.000
loops gen 1 3 1 357 0.002
fib_recursive gen 5 6 5 1,106 0.005
fib_iter gen 7 6 6 955 0.007
asdl_generated gen 6 9 13 510 0.012
scoped_resource gen 26 28 26 1,364 0.019
parse gen 22 25 20 962 0.023
containers gen 4 4 5 124 0.031
files gen 5 4 6 99 0.048
tuple_return_value gen 14 15 11 249 0.056
classes gen 3 0 2 34 0.080
length gen 31 34 32 239 0.129
cartesian gen 66 71 75 395 0.168
escape gen 91 103 94 430 0.211
cgi gen 256 245 257 721 0.355
varargs gen 14 17 12 25 0.555
control_flow gen 134 178 134 149 0.899

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.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.7 0.44
escape gen 3.4 3.4 3.7 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
loops gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.4 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
tuple_return_value gen 3.5 3.7 3.7 7.6 0.47
cgi gen 3.7 3.5 3.4 7.7 0.47
parse gen 3.8 3.7 3.9 8.0 0.48
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
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.3 28.5 48.4 0.59
varargs gen 5.4 5.5 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 3 1 9 0.000
fib_iter gen 0 1 1 10 0.000
control_flow gen 1 1 1 8 0.125
tuple_return_value gen 1 1 4 7 0.143
modules gen 1 0 1 7 0.202
fib_recursive gen 1 0 1 5 0.212
loops gen 2 0 1 7 0.240
files gen 2 4 1 8 0.240
gc_stack_roots gen 1 1 0 5 0.270
containers gen 10 10 9 27 0.354
cgi gen 4 6 3 10 0.400
parse gen 3 2 6 7 0.436
asdl_generated gen 4 1 0 9 0.440
scoped_resource gen 4 3 4 8 0.504
escape gen 7 3 6 10 0.699
length gen 8 2 6 11 0.724
varargs gen 24 21 27 31 0.768
cartesian gen 8 9 0 8 1.010

raw benchmark files