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 7 6 952 0.005
fib_recursive gen 6 6 5 1,108 0.006
modules gen 1 0 1 233 0.006
loops gen 2 3 3 362 0.007
asdl_generated gen 9 9 7 515 0.017
scoped_resource gen 27 25 24 1,382 0.020
parse gen 25 22 21 959 0.026
containers gen 5 6 5 130 0.037
tuple_return_value gen 11 14 12 247 0.044
classes gen 2 1 3 38 0.046
files gen 6 7 7 95 0.060
gc_stack_roots gen 1 1 0 12 0.112
length gen 35 33 34 245 0.143
cartesian gen 69 73 71 388 0.178
escape gen 91 101 95 439 0.207
cgi gen 259 250 263 731 0.354
varargs gen 14 11 19 22 0.632
control_flow gen 133 177 134 147 0.905

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.5 11.5 0.38
gc_stack_roots gen 3.3 3.3 3.3 7.6 0.43
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
length gen 3.4 3.7 3.5 7.7 0.44
modules gen 3.4 3.5 3.5 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
files gen 3.5 3.8 3.8 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.5 28.3 48.3 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
fib_recursive gen 0 0 1 10 0.000
gc_stack_roots gen 0 0 1 8 0.000
loops gen 0 0 0 9 0.000
modules gen 0 1 0 9 0.000
parse gen 0 6 4 8 0.000
files gen 1 0 0 11 0.087
asdl_generated gen 1 1 3 8 0.124
classes gen 1 2 0 4 0.217
cgi gen 3 2 2 11 0.273
fib_iter gen 2 0 1 6 0.334
containers gen 9 8 9 23 0.374
length gen 3 3 4 7 0.429
tuple_return_value gen 4 2 3 9 0.443
scoped_resource gen 3 6 6 6 0.488
control_flow gen 2 2 1 4 0.500
cartesian gen 6 7 5 9 0.666
varargs gen 24 28 19 33 0.722
escape gen 7 4 4 6 1.168

raw benchmark files