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
loops gen 1 3 2 357 0.002
fib_recursive gen 6 5 5 1,108 0.006
fib_iter gen 6 6 4 958 0.006
modules gen 2 1 0 236 0.006
asdl_generated gen 9 8 9 514 0.018
scoped_resource gen 27 79 27 1,364 0.020
containers gen 3 6 7 130 0.023
parse gen 25 25 19 974 0.025
files gen 5 5 6 96 0.050
tuple_return_value gen 14 16 13 254 0.055
classes gen 2 2 2 32 0.058
gc_stack_roots gen 1 1 1 12 0.120
length gen 34 31 35 237 0.144
cartesian gen 69 74 70 421 0.164
escape gen 94 103 92 438 0.215
cgi gen 257 250 259 745 0.345
varargs gen 13 18 18 26 0.491
control_flow gen 132 177 134 146 0.899

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.3 11.2 0.38
asdl_generated gen 3.3 3.5 3.4 7.6 0.43
escape gen 3.4 3.4 3.5 7.7 0.44
loops gen 3.4 3.7 3.7 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.4 3.7 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.7 3.7 8.0 0.47
files gen 3.8 3.8 3.8 7.5 0.51
containers gen 28.5 28.5 28.7 48.2 0.59
varargs gen 5.5 5.4 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 2 8 0.000
gc_stack_roots gen 0 0 0 10 0.000
modules gen 0 1 1 7 0.000
classes gen 1 1 1 11 0.084
asdl_generated gen 1 2 1 9 0.112
fib_iter gen 1 1 3 9 0.112
parse gen 1 2 7 9 0.115
tuple_return_value gen 1 1 2 7 0.143
files gen 2 2 1 10 0.195
loops gen 2 0 1 6 0.294
length gen 4 6 4 10 0.402
scoped_resource gen 3 4 3 7 0.424
cgi gen 3 2 3 7 0.429
containers gen 11 8 7 24 0.451
control_flow gen 4 4 1 7 0.572
escape gen 4 3 7 6 0.668
varargs gen 26 21 20 30 0.851
cartesian gen 6 7 6 7 0.856

raw benchmark files