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
modules gen 0 1 1 236 0.000
loops gen 1 3 2 368 0.003
fib_iter gen 5 5 5 965 0.005
fib_recursive gen 6 5 5 1,072 0.006
asdl_generated gen 9 7 9 514 0.018
scoped_resource gen 25 29 27 1,363 0.018
parse gen 23 25 23 964 0.024
classes gen 1 2 1 32 0.028
tuple_return_value gen 12 13 13 252 0.048
files gen 6 5 6 102 0.055
containers gen 8 5 6 126 0.067
gc_stack_roots gen 2 1 0 15 0.100
length gen 36 35 33 241 0.150
cartesian gen 68 74 73 409 0.167
escape gen 95 100 92 462 0.205
cgi gen 255 247 255 738 0.346
varargs gen 18 21 21 28 0.643
control_flow gen 134 176 155 152 0.884

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.5 4.3 11.6 0.38
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.4 3.7 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
gc_stack_roots gen 3.5 3.3 3.4 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules 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.8 3.8 8.1 0.47
files gen 3.7 3.8 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 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.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
fib_recursive gen 0 1 1 7 0.000
gc_stack_roots gen 0 0 1 5 0.000
control_flow gen 1 4 2 10 0.100
asdl_generated gen 1 3 1 10 0.102
loops gen 1 0 1 9 0.139
classes gen 2 1 1 11 0.164
containers gen 5 9 8 27 0.195
fib_iter gen 2 2 2 10 0.202
files gen 1 2 1 5 0.224
modules gen 1 1 0 6 0.233
parse gen 2 2 3 7 0.290
scoped_resource gen 5 3 3 13 0.384
tuple_return_value gen 3 4 2 7 0.428
cgi gen 5 6 4 10 0.500
length gen 3 2 5 6 0.504
varargs gen 21 18 17 29 0.724
cartesian gen 7 6 3 9 0.771
escape gen 5 5 6 5 0.998

raw benchmark files