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 1 1 240 0.003
loops gen 1 2 1 358 0.004
fib_recursive gen 4 6 6 1,109 0.004
fib_iter gen 6 6 7 962 0.006
asdl_generated gen 6 8 9 508 0.012
scoped_resource gen 27 25 27 1,354 0.020
parse gen 22 23 21 944 0.023
containers gen 4 6 7 130 0.031
tuple_return_value gen 12 16 14 245 0.049
files gen 6 7 7 97 0.061
classes gen 3 2 1 33 0.081
gc_stack_roots gen 1 0 0 12 0.118
length gen 36 33 34 246 0.146
cartesian gen 66 78 68 389 0.170
escape gen 95 99 91 433 0.219
cgi gen 262 248 259 742 0.353
varargs gen 14 15 16 22 0.636
control_flow gen 135 175 136 148 0.908

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.3 11.5 0.38
asdl_generated gen 3.3 3.3 3.3 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
fib_iter gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.4 3.7 7.7 0.46
parse gen 3.8 3.8 3.8 8.3 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
escape gen 3.7 3.5 3.4 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.7 28.5 48.1 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 1 2 10 0.000
gc_stack_roots gen 0 1 1 9 0.000
control_flow gen 1 3 0 10 0.100
files gen 1 0 0 9 0.108
modules gen 1 1 0 6 0.117
loops gen 1 1 2 7 0.179
fib_iter gen 1 1 0 5 0.203
cgi gen 2 4 2 9 0.223
fib_recursive gen 2 0 0 7 0.254
tuple_return_value gen 3 1 1 11 0.275
scoped_resource gen 3 7 3 11 0.281
length gen 2 3 4 6 0.335
parse gen 4 5 5 9 0.436
containers gen 10 8 7 22 0.452
asdl_generated gen 4 2 1 7 0.569
escape gen 4 6 8 7 0.571
varargs gen 24 23 22 34 0.705
cartesian gen 9 2 7 10 0.893

raw benchmark files