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 0 14 0.000
modules gen 1 0 0 233 0.003
loops gen 2 3 3 362 0.005
fib_recursive gen 5 5 6 1,109 0.005
fib_iter gen 6 7 6 944 0.006
asdl_generated gen 9 8 6 547 0.017
scoped_resource gen 25 29 27 1,380 0.018
containers gen 3 6 6 136 0.023
parse gen 22 24 25 941 0.023
classes gen 1 1 1 28 0.031
files gen 5 6 5 101 0.048
tuple_return_value gen 13 17 14 248 0.053
length gen 36 35 36 250 0.144
cartesian gen 64 75 68 430 0.148
escape gen 90 98 94 431 0.208
cgi gen 254 250 261 736 0.346
varargs gen 19 22 16 35 0.553
control_flow gen 133 177 132 147 0.907

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.3 4.5 4.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
scoped_resource gen 3.4 3.5 3.7 7.7 0.44
escape gen 3.4 3.4 3.5 7.6 0.45
fib_recursive gen 3.4 3.7 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
parse gen 3.7 3.7 3.7 8.0 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
length gen 3.7 3.7 3.7 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.4 5.5 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 1 0 1 13 0.077
modules gen 1 1 1 8 0.088
classes gen 2 2 1 15 0.118
loops gen 1 0 0 7 0.121
asdl_generated gen 1 2 4 8 0.127
gc_stack_roots gen 1 1 1 7 0.197
fib_recursive gen 1 2 0 5 0.209
tuple_return_value gen 2 0 1 8 0.250
files gen 2 1 2 6 0.321
containers gen 10 9 8 25 0.416
parse gen 4 3 1 9 0.437
cgi gen 4 3 0 9 0.444
control_flow gen 2 1 3 4 0.501
scoped_resource gen 5 3 3 6 0.816
varargs gen 19 16 23 22 0.880
length gen 3 2 3 3 0.999
cartesian gen 11 5 7 8 1.371
escape gen 9 7 5 5 1.795

raw benchmark files