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 233 0.000
fib_recursive gen 6 6 6 1,073 0.006
fib_iter gen 6 6 7 969 0.006
loops gen 3 2 1 362 0.007
asdl_generated gen 8 7 9 519 0.015
scoped_resource gen 25 29 29 1,351 0.018
parse gen 23 25 23 949 0.025
containers gen 5 8 5 132 0.037
tuple_return_value gen 12 16 13 249 0.048
gc_stack_roots gen 1 0 0 12 0.060
files gen 7 6 6 101 0.067
classes gen 3 1 1 31 0.088
length gen 35 32 33 239 0.147
cartesian gen 66 72 66 394 0.168
escape gen 93 99 95 437 0.214
cgi gen 260 247 258 749 0.347
varargs gen 14 18 18 32 0.437
control_flow gen 136 179 134 150 0.910

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.6 0.43
escape gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.4 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.9 8.1 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
modules gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 12 0.000
fib_recursive gen 0 0 0 5 0.000
files gen 0 1 1 6 0.000
loops gen 0 1 2 8 0.000
gc_stack_roots gen 1 1 1 9 0.079
fib_iter gen 1 1 0 8 0.128
control_flow gen 1 1 1 7 0.142
modules gen 1 0 1 7 0.205
asdl_generated gen 2 3 1 8 0.249
length gen 3 4 5 9 0.327
cgi gen 2 8 2 6 0.333
containers gen 9 7 8 23 0.387
parse gen 2 2 2 5 0.391
tuple_return_value gen 3 1 2 7 0.427
escape gen 4 6 4 8 0.503
scoped_resource gen 5 3 1 8 0.619
varargs gen 24 20 20 24 0.999
cartesian gen 9 8 10 6 1.506

raw benchmark files