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 1 0 13 0.000
modules gen 0 0 1 208 0.000
fib_recursive gen 5 4 5 985 0.006
loops gen 2 3 1 311 0.007
fib_iter gen 6 5 6 741 0.007
asdl_generated gen 9 10 10 508 0.019
scoped_resource gen 26 30 28 1,234 0.021
parse gen 24 24 23 892 0.027
containers gen 5 4 7 108 0.043
files gen 5 6 6 89 0.057
tuple_return_value gen 13 16 12 225 0.059
classes gen 2 1 2 34 0.066
length gen 27 30 31 222 0.124
cartesian gen 68 74 65 354 0.192
escape gen 85 93 82 380 0.224
cgi gen 182 177 184 658 0.276
varargs gen 13 15 18 25 0.516
control_flow gen 124 168 125 135 0.919

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.6 4.3 11.5 0.39
escape gen 3.4 3.7 3.7 7.9 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.5 3.5 3.5 7.7 0.46
gc_stack_roots gen 3.5 3.4 3.5 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
cgi gen 3.7 3.5 3.5 7.9 0.47
length gen 3.7 3.7 3.5 7.9 0.47
fib_iter gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.9 3.7 7.7 0.47
loops gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.9 3.9 3.9 8.1 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.9 3.8 3.9 7.9 0.50
containers gen 28.5 28.5 28.6 48.2 0.59
varargs gen 5.6 5.6 5.6 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 0 0 6 0.000
classes gen 0 1 0 4 0.000
fib_recursive gen 0 1 1 7 0.000
loops gen 0 0 1 4 0.000
parse gen 0 2 1 9 0.000
cartesian gen 1 3 3 7 0.145
fib_iter gen 1 1 0 5 0.185
tuple_return_value gen 1 0 2 5 0.204
files gen 1 0 0 5 0.205
modules gen 1 1 0 5 0.224
control_flow gen 1 0 0 4 0.250
gc_stack_roots gen 1 0 1 4 0.296
containers gen 7 8 6 21 0.357
scoped_resource gen 3 1 2 4 0.763
length gen 5 2 1 5 0.979
varargs gen 11 8 6 11 0.993
cgi gen 4 1 2 4 1.000
escape gen 2 3 4 2 1.002

raw benchmark files