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
modules gen 1 0 0 238 0.003
fib_recursive gen 6 5 6 1,105 0.006
loops gen 3 3 3 370 0.007
fib_iter gen 7 7 5 965 0.007
asdl_generated gen 9 7 8 514 0.017
scoped_resource gen 29 28 30 1,405 0.020
parse gen 23 27 25 972 0.023
containers gen 6 2 7 133 0.046
files gen 6 5 6 104 0.057
tuple_return_value gen 15 16 14 249 0.060
classes gen 3 2 3 30 0.091
gc_stack_roots gen 1 1 1 13 0.107
length gen 35 31 34 253 0.138
cartesian gen 67 75 67 399 0.167
escape gen 94 101 93 439 0.215
varargs gen 10 14 17 31 0.327
cgi gen 259 248 256 737 0.351
control_flow gen 136 178 134 147 0.922

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.3 4.2 11.5 0.38
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
cartesian gen 3.4 3.5 3.4 7.7 0.44
cgi gen 3.4 3.4 3.4 7.7 0.44
parse gen 3.7 3.8 3.7 8.1 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.5 0.46
length gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.4 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
escape gen 3.7 3.7 3.5 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.6 28.5 28.5 48.4 0.59
varargs gen 5.5 5.5 5.4 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 0 15 0.000
control_flow gen 0 1 2 8 0.000
fib_iter gen 0 0 2 7 0.000
fib_recursive gen 0 1 0 4 0.000
gc_stack_roots gen 0 0 0 9 0.000
loops gen 0 0 0 6 0.000
tuple_return_value gen 0 1 1 6 0.000
asdl_generated gen 1 3 2 12 0.083
modules gen 1 1 1 7 0.106
files gen 1 2 1 6 0.165
cgi gen 2 3 0 11 0.182
scoped_resource gen 1 4 1 5 0.205
containers gen 8 13 7 23 0.353
parse gen 3 0 1 6 0.491
length gen 5 5 4 7 0.711
varargs gen 28 25 23 29 0.978
cartesian gen 8 5 8 8 0.997
escape gen 4 4 6 3 1.335

raw benchmark files