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 1 32 0.000
gc_stack_roots gen 0 1 1 13 0.000
modules gen 0 1 1 237 0.000
fib_recursive gen 5 5 6 1,135 0.005
loops gen 2 3 2 381 0.007
fib_iter gen 7 6 6 964 0.007
asdl_generated gen 8 8 8 521 0.015
scoped_resource gen 24 29 27 1,371 0.017
parse gen 25 26 23 939 0.027
files gen 5 6 5 101 0.051
tuple_return_value gen 13 12 14 242 0.054
containers gen 7 7 6 116 0.059
length gen 32 29 38 242 0.133
cartesian gen 71 74 70 396 0.178
escape gen 90 102 94 444 0.203
cgi gen 257 246 258 726 0.355
varargs gen 14 13 22 27 0.520
control_flow gen 134 180 135 156 0.856

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 1 6 0.000
loops gen 0 0 1 6 0.000
parse gen 0 1 2 12 0.000
fib_recursive gen 1 1 0 11 0.094
control_flow gen 1 0 1 7 0.142
gc_stack_roots gen 1 1 0 7 0.191
containers gen 7 7 8 35 0.194
modules gen 1 0 1 7 0.196
tuple_return_value gen 2 5 1 10 0.203
files gen 2 1 2 10 0.205
classes gen 3 1 1 13 0.206
asdl_generated gen 2 2 2 9 0.223
cgi gen 2 5 2 7 0.285
cartesian gen 4 6 5 7 0.568
varargs gen 24 25 16 29 0.830
length gen 6 8 1 7 0.860
scoped_resource gen 6 2 3 6 0.995
escape gen 8 3 4 6 1.337

raw benchmark files