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 0 0 234 0.000
fib_recursive gen 5 5 5 1,097 0.005
fib_iter gen 6 7 6 948 0.006
loops gen 3 2 1 354 0.007
asdl_generated gen 9 10 9 527 0.017
scoped_resource gen 27 27 29 1,363 0.020
parse gen 24 26 23 936 0.026
containers gen 6 8 6 126 0.048
classes gen 2 1 3 33 0.055
tuple_return_value gen 15 15 14 251 0.060
files gen 7 5 5 99 0.070
gc_stack_roots gen 1 1 1 13 0.118
length gen 35 32 36 245 0.141
cartesian gen 66 75 70 404 0.164
escape gen 93 99 96 435 0.214
cgi gen 253 249 257 746 0.339
varargs gen 17 13 14 31 0.543
control_flow gen 138 178 132 148 0.936

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
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.3 7.6 0.45
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
cartesian gen 3.5 3.4 3.5 7.5 0.47
files gen 3.7 3.7 3.7 7.7 0.47
scoped_resource gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
fib_iter gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.3 28.5 28.5 48.2 0.59
varargs gen 5.5 5.6 5.6 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 2 2 7 0.000
gc_stack_roots gen 0 1 0 8 0.000
loops gen 0 1 2 6 0.000
tuple_return_value gen 0 1 1 6 0.000
classes gen 1 2 0 10 0.090
asdl_generated gen 1 0 1 10 0.100
fib_recursive gen 1 2 1 8 0.112
fib_iter gen 1 0 1 9 0.112
modules gen 1 1 1 9 0.160
parse gen 2 1 3 11 0.181
containers gen 8 6 8 30 0.267
control_flow gen 2 2 3 7 0.287
scoped_resource gen 3 4 1 8 0.377
length gen 4 4 2 5 0.792
varargs gen 22 26 24 27 0.806
escape gen 6 5 2 6 0.999
cartesian gen 9 5 6 7 1.278
cgi gen 6 2 2 3 1.994

raw benchmark files