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
gc_stack_roots gen 0 0 1 14 0.000
modules gen 0 1 1 234 0.000
loops gen 1 3 3 380 0.002
fib_recursive gen 5 6 6 1,097 0.005
fib_iter gen 5 6 6 963 0.005
asdl_generated gen 8 10 9 504 0.016
scoped_resource gen 28 28 28 1,374 0.020
parse gen 24 24 20 963 0.025
classes gen 1 1 3 33 0.027
tuple_return_value gen 14 16 14 254 0.056
containers gen 7 4 5 124 0.056
files gen 6 4 5 104 0.056
length gen 34 31 35 244 0.139
cartesian gen 66 69 68 423 0.155
escape gen 94 96 93 433 0.218
cgi gen 261 251 259 729 0.358
varargs gen 16 17 11 38 0.424
control_flow gen 134 178 134 162 0.826

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.3 4.3 11.5 0.39
asdl_generated gen 3.3 3.4 3.3 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.7 0.44
fib_recursive gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
escape gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.4 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.4 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
loops gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
files gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.8 28.5 48.2 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 2 2 7 0.000
fib_recursive gen 1 0 0 12 0.075
parse gen 1 3 6 9 0.113
tuple_return_value gen 1 1 1 8 0.126
control_flow gen 1 1 2 7 0.143
classes gen 2 1 0 12 0.150
files gen 1 3 2 5 0.195
asdl_generated gen 2 0 1 10 0.199
gc_stack_roots gen 1 1 0 7 0.202
fib_iter gen 2 1 1 10 0.205
containers gen 7 10 9 28 0.247
modules gen 1 1 0 6 0.248
scoped_resource gen 3 4 2 11 0.269
loops gen 2 0 0 4 0.432
length gen 5 5 2 10 0.498
escape gen 4 10 6 4 0.993
cartesian gen 10 11 8 9 1.103
varargs gen 22 21 28 19 1.165

raw benchmark files