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 11 0.000
fib_recursive gen 5 6 6 1,122 0.005
loops gen 2 3 2 363 0.005
modules gen 1 1 0 234 0.006
fib_iter gen 7 6 6 950 0.007
asdl_generated gen 9 8 7 520 0.017
scoped_resource gen 29 32 25 1,410 0.020
parse gen 23 24 24 939 0.025
containers gen 6 7 7 136 0.043
tuple_return_value gen 12 16 12 247 0.048
files gen 6 5 5 113 0.052
classes gen 2 1 2 31 0.057
length gen 36 35 34 241 0.149
cartesian gen 68 74 66 404 0.168
escape gen 91 101 94 429 0.211
cgi gen 260 246 256 727 0.358
varargs gen 14 16 20 32 0.447
control_flow gen 139 176 135 145 0.959

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.2 4.3 11.5 0.39
length gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.4 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
loops gen 3.7 3.7 3.4 7.6 0.48
files gen 3.8 3.7 3.7 7.9 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 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 3 2 10 0.000
fib_iter gen 0 1 1 7 0.000
modules gen 0 0 1 10 0.000
classes gen 1 2 1 11 0.081
loops gen 1 0 1 9 0.096
asdl_generated gen 1 2 3 8 0.125
gc_stack_roots gen 1 1 0 10 0.141
cgi gen 1 5 5 7 0.143
parse gen 2 3 1 14 0.146
files gen 1 2 2 6 0.160
fib_recursive gen 1 0 0 6 0.173
containers gen 8 7 6 30 0.258
length gen 3 1 5 9 0.332
scoped_resource gen 2 0 5 5 0.395
tuple_return_value gen 3 1 3 6 0.494
escape gen 6 4 5 7 0.854
varargs gen 24 22 18 25 0.981
cartesian gen 8 6 13 8 0.998

raw benchmark files