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 0 1 1 240 0.000
loops gen 2 3 1 358 0.005
fib_recursive gen 6 4 5 1,089 0.006
fib_iter gen 6 6 6 961 0.006
asdl_generated gen 9 9 7 515 0.017
scoped_resource gen 27 31 26 1,411 0.019
parse gen 24 25 23 949 0.025
containers gen 4 9 4 123 0.032
tuple_return_value gen 14 14 13 249 0.057
files gen 7 7 4 101 0.068
classes gen 3 1 2 38 0.070
gc_stack_roots gen 1 0 1 13 0.104
length gen 33 31 34 246 0.133
cartesian gen 68 72 70 394 0.173
escape gen 92 98 91 442 0.209
cgi gen 256 248 259 727 0.353
varargs gen 12 18 17 28 0.426
control_flow gen 135 176 134 150 0.897

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.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.7 3.8 8.0 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
length gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.6 28.7 28.7 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
classes gen 0 2 1 5 0.000
control_flow gen 0 2 2 3 0.000
fib_recursive gen 0 2 1 10 0.000
files gen 0 0 3 6 0.000
gc_stack_roots gen 0 1 0 7 0.000
fib_iter gen 1 1 1 10 0.101
loops gen 1 0 1 8 0.105
tuple_return_value gen 1 3 2 7 0.144
asdl_generated gen 1 1 3 6 0.166
modules gen 1 0 0 6 0.238
parse gen 2 2 3 7 0.280
containers gen 10 6 10 28 0.351
scoped_resource gen 3 1 4 8 0.376
cgi gen 6 2 3 12 0.499
length gen 5 6 5 7 0.710
escape gen 6 6 7 7 0.859
varargs gen 26 20 21 27 0.958
cartesian gen 7 8 6 7 1.005

raw benchmark files