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 1 0 2 232 0.003
fib_iter gen 5 6 5 956 0.005
fib_recursive gen 5 6 5 1,096 0.005
loops gen 2 3 1 350 0.005
asdl_generated gen 8 8 4 508 0.016
scoped_resource gen 28 28 28 1,356 0.021
parse gen 25 25 24 951 0.026
tuple_return_value gen 13 16 14 250 0.053
containers gen 7 10 6 135 0.053
gc_stack_roots gen 1 0 0 13 0.056
classes gen 2 2 2 36 0.056
files gen 6 7 6 101 0.059
length gen 36 34 30 245 0.148
cartesian gen 71 74 69 398 0.179
escape gen 92 100 98 435 0.213
cgi gen 258 249 258 727 0.355
varargs gen 19 19 12 25 0.775
control_flow gen 135 179 137 152 0.889

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.2 4.2 11.6 0.38
asdl_generated gen 3.3 3.5 3.3 7.7 0.42
cartesian gen 3.4 3.4 3.5 7.7 0.44
cgi gen 3.4 3.7 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.7 3.7 8.0 0.47
loops gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.4 28.3 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 1 1 0 11 0.072
gc_stack_roots gen 1 2 2 9 0.080
parse gen 1 2 2 10 0.103
classes gen 1 1 1 8 0.122
files gen 1 0 1 8 0.124
loops gen 1 0 2 6 0.148
fib_recursive gen 1 0 2 6 0.176
control_flow gen 1 0 1 5 0.200
scoped_resource gen 2 4 2 10 0.201
asdl_generated gen 2 2 7 9 0.223
tuple_return_value gen 2 1 1 9 0.225
fib_iter gen 3 1 2 9 0.306
length gen 3 3 9 8 0.377
containers gen 7 6 8 18 0.397
cgi gen 3 3 2 7 0.429
varargs gen 19 20 26 32 0.606
cartesian gen 4 6 6 4 0.999
escape gen 6 6 6 6 1.005

raw benchmark files