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 1 0 15 0.000
modules gen 0 1 1 236 0.000
loops gen 1 2 3 362 0.002
fib_recursive gen 6 5 6 1,094 0.006
fib_iter gen 6 7 7 967 0.006
asdl_generated gen 8 10 9 516 0.015
scoped_resource gen 26 32 26 1,395 0.018
parse gen 23 23 22 952 0.024
classes gen 2 1 1 34 0.053
files gen 6 6 6 96 0.060
tuple_return_value gen 15 12 13 245 0.062
containers gen 8 7 6 120 0.065
length gen 33 31 37 248 0.133
cartesian gen 69 77 69 406 0.170
escape gen 87 101 90 434 0.200
cgi gen 259 249 258 727 0.356
varargs gen 16 16 20 31 0.512
control_flow gen 134 179 136 148 0.907

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 0 9 0.000
tuple_return_value gen 0 5 2 10 0.000
files gen 1 1 1 10 0.096
classes gen 1 1 2 9 0.100
fib_iter gen 1 0 0 8 0.126
containers gen 7 8 8 31 0.220
modules gen 2 0 0 7 0.235
gc_stack_roots gen 1 0 1 6 0.239
cgi gen 2 2 2 8 0.250
control_flow gen 2 0 0 8 0.250
loops gen 2 1 0 6 0.294
parse gen 2 4 3 5 0.406
asdl_generated gen 3 0 1 6 0.493
scoped_resource gen 4 2 4 8 0.495
cartesian gen 7 3 7 12 0.582
length gen 6 5 2 7 0.857
varargs gen 22 23 19 25 0.873
escape gen 11 4 8 6 1.833

raw benchmark files