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
fib_iter gen 5 6 4 960 0.005
fib_recursive gen 6 5 6 1,119 0.006
modules gen 1 1 0 237 0.006
loops gen 3 3 3 366 0.007
asdl_generated gen 8 10 7 511 0.016
scoped_resource gen 27 26 27 1,359 0.020
parse gen 22 26 21 949 0.024
containers gen 4 7 5 130 0.031
tuple_return_value gen 12 14 15 255 0.047
gc_stack_roots gen 1 1 1 15 0.048
files gen 6 6 6 95 0.058
classes gen 3 2 2 33 0.082
length gen 37 33 34 241 0.152
cartesian gen 72 76 69 402 0.179
escape gen 93 103 96 425 0.219
cgi gen 258 248 243 739 0.349
varargs gen 22 19 11 31 0.691
control_flow gen 133 178 135 147 0.906

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.3 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.5 3.4 7.7 0.44
parse gen 3.7 3.8 3.8 8.3 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
files gen 3.7 3.7 3.7 7.7 0.47
length gen 3.7 3.7 3.5 7.7 0.47
modules gen 3.7 3.7 3.5 7.7 0.47
control_flow gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 48.3 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 1 11 0.000
fib_recursive gen 0 1 0 4 0.000
loops gen 0 0 0 7 0.000
modules gen 0 0 1 7 0.000
files gen 1 1 1 11 0.102
gc_stack_roots gen 1 0 0 6 0.120
fib_iter gen 2 1 3 10 0.202
asdl_generated gen 2 0 3 8 0.249
length gen 2 4 5 7 0.284
control_flow gen 2 1 1 7 0.284
cgi gen 3 4 4 10 0.301
parse gen 3 1 4 9 0.325
containers gen 10 7 9 28 0.356
tuple_return_value gen 3 3 0 7 0.430
scoped_resource gen 3 6 3 5 0.595
varargs gen 17 19 27 25 0.662
escape gen 5 3 2 6 0.834
cartesian gen 3 3 6 2 1.498

raw benchmark files