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 12 0.000
modules gen 0 1 0 229 0.000
loops gen 1 3 2 363 0.002
fib_recursive gen 6 8 4 1,092 0.006
fib_iter gen 6 7 6 953 0.006
asdl_generated gen 8 8 9 519 0.015
scoped_resource gen 30 30 28 1,370 0.022
parse gen 24 22 25 943 0.025
containers gen 4 3 7 124 0.034
files gen 5 6 5 99 0.049
classes gen 2 1 1 35 0.050
tuple_return_value gen 14 16 14 253 0.055
length gen 35 33 32 238 0.147
escape gen 91 101 94 432 0.211
cartesian gen 101 72 69 387 0.262
cgi gen 241 248 256 745 0.324
varargs gen 13 15 14 24 0.537
control_flow gen 135 178 134 147 0.917

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.6 0.38
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.7 7.7 0.46
gc_stack_roots gen 3.5 3.4 3.4 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.5 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.5 5.6 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cartesian gen 0 8 6 8 0.000
control_flow gen 0 1 2 9 0.000
fib_recursive gen 0 1 2 8 0.000
scoped_resource gen 0 1 2 8 0.000
classes gen 1 2 2 7 0.125
modules gen 1 0 1 9 0.155
gc_stack_roots gen 1 1 0 8 0.168
parse gen 2 5 1 11 0.187
fib_iter gen 1 0 1 5 0.201
files gen 2 1 2 7 0.275
tuple_return_value gen 1 1 1 3 0.330
loops gen 2 0 0 5 0.332
cgi gen 2 3 3 6 0.333
containers gen 9 11 6 26 0.357
length gen 3 4 6 8 0.375
asdl_generated gen 2 2 1 5 0.438
varargs gen 25 23 24 31 0.800
escape gen 7 4 3 7 1.002

raw benchmark files