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 0 1 235 0.000
loops gen 1 3 1 360 0.002
fib_recursive gen 5 6 5 1,106 0.005
fib_iter gen 6 6 5 966 0.006
asdl_generated gen 8 8 9 507 0.016
scoped_resource gen 29 26 29 1,322 0.022
containers gen 3 5 7 130 0.023
parse gen 23 24 23 950 0.024
classes gen 1 3 2 35 0.025
files gen 5 6 6 96 0.050
tuple_return_value gen 13 16 12 249 0.052
gc_stack_roots gen 1 1 1 11 0.064
length gen 35 33 36 246 0.143
cartesian gen 63 73 68 392 0.160
escape gen 95 100 95 430 0.221
cgi gen 259 251 256 740 0.350
varargs gen 13 20 16 30 0.432
control_flow gen 133 178 134 142 0.940

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.5 4.5 11.5 0.39
fib_iter gen 3.4 3.5 3.5 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.5 3.4 7.6 0.45
length gen 3.5 3.4 3.4 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
asdl_generated gen 3.5 3.3 3.3 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.9 3.8 3.8 8.0 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.3 28.5 48.4 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
gc_stack_roots gen 1 0 1 10 0.070
fib_recursive gen 1 0 1 8 0.129
modules gen 1 1 0 10 0.139
fib_iter gen 1 1 2 7 0.144
scoped_resource gen 1 7 1 7 0.145
files gen 2 1 1 12 0.163
control_flow gen 2 1 2 10 0.199
classes gen 2 0 1 8 0.223
cgi gen 2 1 3 7 0.285
tuple_return_value gen 2 1 3 7 0.286
parse gen 3 3 2 10 0.298
escape gen 3 5 3 9 0.333
loops gen 2 0 1 5 0.335
asdl_generated gen 2 2 1 5 0.399
containers gen 11 9 7 24 0.445
varargs gen 25 19 22 26 0.959
length gen 5 4 3 5 1.004
cartesian gen 12 7 7 8 1.491

raw benchmark files