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_recursive gen 5 5 5 1,085 0.005
modules gen 1 1 1 235 0.006
fib_iter gen 6 5 7 962 0.006
loops gen 3 3 2 369 0.007
containers gen 2 6 6 124 0.017
scoped_resource gen 23 28 26 1,353 0.017
asdl_generated gen 10 9 8 511 0.019
parse gen 23 26 24 953 0.024
classes gen 1 1 3 30 0.031
files gen 5 5 6 103 0.047
tuple_return_value gen 13 14 13 249 0.053
gc_stack_roots gen 1 1 1 13 0.054
length gen 37 33 36 243 0.150
cartesian gen 68 73 72 437 0.156
escape gen 92 103 96 448 0.206
cgi gen 258 249 256 741 0.348
varargs gen 20 13 22 28 0.718
control_flow gen 133 177 132 148 0.901

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.6 0.37
escape gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
length gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.7 3.7 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
files gen 3.7 3.7 3.8 7.7 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.48
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 2 7 0.000
loops gen 0 0 1 5 0.000
modules gen 0 1 0 6 0.000
gc_stack_roots gen 1 0 1 7 0.100
fib_iter gen 1 2 0 9 0.112
fib_recursive gen 1 1 1 8 0.112
classes gen 2 2 0 14 0.134
length gen 2 4 2 11 0.184
cgi gen 2 2 3 8 0.251
control_flow gen 2 1 3 6 0.334
tuple_return_value gen 2 3 2 6 0.339
files gen 2 2 1 5 0.387
containers gen 11 7 8 26 0.445
escape gen 6 2 2 10 0.596
parse gen 3 1 2 5 0.596
varargs gen 23 24 15 32 0.722
cartesian gen 7 5 3 9 0.779
scoped_resource gen 7 3 5 9 0.785

raw benchmark files