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
fib_recursive gen 5 5 6 1,095 0.005
loops gen 2 3 1 353 0.005
modules gen 1 1 0 231 0.006
fib_iter gen 7 6 6 962 0.007
asdl_generated gen 8 10 10 525 0.015
scoped_resource gen 29 28 28 1,353 0.021
parse gen 22 25 23 947 0.024
classes gen 1 3 1 34 0.026
files gen 4 4 5 97 0.040
tuple_return_value gen 14 14 14 250 0.056
containers gen 8 11 6 131 0.063
gc_stack_roots gen 1 0 0 15 0.091
length gen 36 29 35 236 0.151
cartesian gen 71 103 69 399 0.179
escape gen 89 100 94 435 0.204
cgi gen 259 246 243 737 0.351
varargs gen 13 13 18 31 0.429
control_flow gen 134 176 136 144 0.931

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.5 11.5 0.39
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.4 3.4 7.6 0.45
loops gen 3.4 3.7 3.7 7.6 0.45
cgi gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.9 3.9 8.1 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
files gen 3.7 3.7 3.8 7.7 0.47
cartesian gen 3.5 3.4 3.4 7.3 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
containers gen 28.3 28.5 28.7 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
fib_iter gen 0 1 1 6 0.000
gc_stack_roots gen 0 1 1 5 0.000
modules gen 0 0 1 10 0.000
loops gen 1 0 2 10 0.084
tuple_return_value gen 1 2 1 9 0.111
fib_recursive gen 1 1 0 7 0.148
containers gen 5 4 8 26 0.198
scoped_resource gen 2 3 2 9 0.218
cgi gen 2 6 3 9 0.222
control_flow gen 2 3 1 9 0.222
classes gen 2 0 2 8 0.225
parse gen 3 2 3 10 0.305
files gen 3 3 2 9 0.321
asdl_generated gen 2 0 0 6 0.333
length gen 3 7 3 6 0.496
cartesian gen 4 3 6 5 0.805
varargs gen 25 25 21 26 0.983
escape gen 10 5 4 8 1.247

raw benchmark files