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 5 5 5 1,082 0.005
fib_iter gen 5 6 6 952 0.005
loops gen 2 2 2 361 0.007
asdl_generated gen 9 8 8 521 0.017
scoped_resource gen 28 28 29 1,448 0.020
parse gen 20 25 24 947 0.021
tuple_return_value gen 13 14 14 246 0.054
classes gen 2 1 1 31 0.055
files gen 7 6 7 99 0.068
containers gen 8 5 7 120 0.069
gc_stack_roots gen 1 1 0 15 0.090
length gen 33 33 34 237 0.139
cartesian gen 73 74 75 383 0.190
escape gen 95 96 97 436 0.218
cgi gen 262 256 259 721 0.363
varargs gen 19 19 17 24 0.794
control_flow gen 134 179 141 147 0.913

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.3 4.5 11.5 0.38
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.5 3.7 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.7 7.7 0.46
length gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.3 28.5 28.5 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
files gen 0 1 0 7 0.000
gc_stack_roots gen 0 0 1 5 0.000
loops gen 0 1 0 7 0.000
classes gen 1 2 2 11 0.078
asdl_generated gen 1 2 2 9 0.110
cgi gen 1 2 2 9 0.111
fib_recursive gen 1 1 1 9 0.114
modules gen 1 0 0 8 0.168
containers gen 5 9 6 28 0.184
fib_iter gen 2 1 1 10 0.199
scoped_resource gen 2 4 2 10 0.203
tuple_return_value gen 2 2 1 9 0.209
cartesian gen 2 6 2 5 0.400
escape gen 3 9 3 6 0.500
control_flow gen 2 0 2 4 0.501
parse gen 6 2 1 11 0.532
varargs gen 19 19 22 32 0.596
length gen 5 4 4 8 0.625

raw benchmark files