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 12 0.000
modules gen 0 1 0 238 0.000
fib_recursive gen 5 4 4 1,114 0.005
fib_iter gen 6 7 6 956 0.006
loops gen 3 1 1 358 0.007
asdl_generated gen 8 8 10 512 0.016
scoped_resource gen 28 26 26 1,370 0.021
parse gen 22 25 24 975 0.023
tuple_return_value gen 12 16 14 255 0.047
classes gen 2 1 2 33 0.054
containers gen 7 8 3 128 0.054
files gen 7 6 7 98 0.068
length gen 34 31 33 248 0.139
cartesian gen 68 73 59 397 0.171
escape gen 95 100 95 464 0.205
cgi gen 259 247 260 729 0.355
varargs gen 14 15 18 31 0.453
control_flow gen 135 182 134 147 0.920

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.3 4.3 11.5 0.39
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
length gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.5 3.4 3.4 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.7 0.46
fib_iter gen 3.5 3.5 3.4 7.7 0.46
modules gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
cgi gen 3.5 3.5 3.4 7.5 0.47
control_flow gen 3.7 3.7 3.8 7.7 0.47
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.3 28.4 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
files gen 0 1 0 9 0.000
loops gen 0 2 1 7 0.000
classes gen 1 2 1 9 0.098
fib_iter gen 1 0 1 9 0.113
modules gen 1 0 1 10 0.143
gc_stack_roots gen 1 1 1 9 0.156
fib_recursive gen 1 2 2 6 0.172
control_flow gen 1 0 3 5 0.200
scoped_resource gen 2 6 4 10 0.203
containers gen 7 7 11 25 0.277
asdl_generated gen 2 2 0 7 0.285
tuple_return_value gen 3 0 1 8 0.372
escape gen 3 5 6 8 0.376
parse gen 3 2 2 7 0.433
length gen 4 6 6 7 0.579
cartesian gen 7 7 14 10 0.699
varargs gen 24 23 21 25 0.964
cgi gen 5 3 1 4 1.249

raw benchmark files