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
classes gen 0 2 3 34 0.000
gc_stack_roots gen 0 1 1 15 0.000
modules gen 0 1 1 236 0.000
loops gen 1 2 2 362 0.002
fib_recursive gen 5 6 5 1,104 0.004
fib_iter gen 5 6 7 992 0.005
asdl_generated gen 8 7 8 525 0.015
scoped_resource gen 25 29 27 1,360 0.018
parse gen 24 26 23 961 0.025
files gen 5 5 6 103 0.044
tuple_return_value gen 13 15 11 284 0.046
containers gen 7 7 5 124 0.056
length gen 34 34 38 243 0.140
cartesian gen 67 73 68 399 0.168
escape gen 94 97 95 424 0.222
cgi gen 257 251 260 752 0.341
varargs gen 12 19 13 31 0.399
control_flow gen 133 181 132 151 0.882

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.5 11.5 0.38
gc_stack_roots gen 3.3 3.3 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
fib_iter gen 3.4 3.7 3.7 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.7 3.4 3.5 7.7 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
containers gen 28.4 28.5 28.6 48.3 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
parse gen 1 3 3 7 0.139
modules gen 1 0 0 9 0.154
loops gen 2 2 1 9 0.197
fib_recursive gen 2 0 1 9 0.200
fib_iter gen 2 1 0 8 0.223
gc_stack_roots gen 1 1 0 6 0.235
containers gen 7 7 9 29 0.238
asdl_generated gen 2 3 2 8 0.248
tuple_return_value gen 2 2 4 8 0.252
classes gen 3 1 0 10 0.272
control_flow gen 2 1 4 5 0.398
escape gen 4 9 3 9 0.444
cgi gen 4 0 1 9 0.444
files gen 2 2 1 5 0.457
scoped_resource gen 5 4 4 9 0.556
length gen 5 3 0 7 0.714
varargs gen 25 19 25 26 0.991
cartesian gen 8 7 5 6 1.336

raw benchmark files