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 1 1 15 0.000
loops gen 1 2 2 345 0.002
fib_recursive gen 5 5 6 1,094 0.005
modules gen 1 1 0 239 0.006
fib_iter gen 6 6 7 962 0.006
asdl_generated gen 8 10 8 523 0.015
scoped_resource gen 27 28 26 1,386 0.020
containers gen 3 7 5 129 0.023
parse gen 23 26 21 953 0.024
tuple_return_value gen 12 14 13 248 0.047
classes gen 2 2 2 35 0.051
files gen 6 6 7 98 0.059
length gen 34 34 34 242 0.141
cartesian gen 70 76 72 391 0.178
escape gen 89 99 93 443 0.202
cgi gen 258 247 255 733 0.351
control_flow gen 138 182 135 145 0.958
varargs gen 25 15 16 24 1.035

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.6 0.38
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
length gen 3.4 3.5 3.5 7.7 0.44
cartesian gen 3.5 3.4 3.5 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.8 3.9 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.5 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.3 28.4 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
control_flow gen 0 6 1 10 0.000
modules gen 0 1 1 6 0.000
files gen 1 1 0 9 0.107
classes gen 1 1 1 8 0.108
fib_iter gen 1 1 0 7 0.144
fib_recursive gen 1 1 0 6 0.173
cgi gen 2 4 5 9 0.222
asdl_generated gen 2 0 2 8 0.247
gc_stack_roots gen 1 0 0 5 0.278
parse gen 3 1 4 10 0.295
loops gen 2 1 1 5 0.335
scoped_resource gen 3 4 4 8 0.367
varargs gen 15 24 22 32 0.466
tuple_return_value gen 3 3 2 6 0.486
length gen 4 3 5 8 0.501
containers gen 11 7 9 21 0.520
cartesian gen 5 2 3 6 0.841
escape gen 9 6 6 1 9.024

raw benchmark files