mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oil/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
gc_stack_roots gen 0 1 3 0.000
modules gen 1 1 179 0.005
fib_iter gen 8 7 903 0.008
fib_recursive gen 10 10 887 0.011
loops gen 4 2 296 0.012
asdl_generated gen 8 9 375 0.021
parse gen 27 25 771 0.034
scoped_resource gen 44 45 1,093 0.040
containers gen 6 4 112 0.056
classes gen 2 1 23 0.068
files gen 5 7 68 0.070
tuple_return_value gen 19 17 185 0.103
length gen 40 40 209 0.192
cartesian gen 83 83 325 0.254
escape gen 102 104 354 0.289
cgi gen 251 266 510 0.493
varargs gen 15 15 18 0.810
control_flow gen 211 160 105 1.996

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++-Souffle Python C++ : Python
classes gen 4.3 4.5 10.7 0.40
parse gen 3.7 3.9 7.6 0.48
fib_recursive gen 3.5 3.8 7.1 0.50
asdl_generated gen 3.5 3.5 6.9 0.51
gc_stack_roots gen 3.5 3.5 6.9 0.51
length gen 3.7 3.8 7.1 0.52
cartesian gen 3.7 3.5 6.9 0.53
cgi gen 3.7 3.7 6.9 0.53
escape gen 3.7 3.7 6.9 0.53
control_flow gen 3.8 3.7 7.1 0.54
scoped_resource gen 3.8 3.7 7.1 0.54
files gen 3.8 3.7 6.9 0.55
modules gen 3.8 3.5 6.9 0.55
tuple_return_value gen 3.8 3.8 6.9 0.55
loops gen 3.9 3.8 7.1 0.56
fib_iter gen 3.8 3.8 6.8 0.56
containers gen 28.9 28.8 47.6 0.61
varargs gen 5.5 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
fib_iter gen 0 1 6 0.000
loops gen 0 1 5 0.000
modules gen 1 1 7 0.120
tuple_return_value gen 1 2 7 0.144
control_flow gen 1 2 6 0.166
fib_recursive gen 1 1 5 0.194
classes gen 2 2 8 0.194
gc_stack_roots gen 2 1 8 0.208
containers gen 5 6 21 0.250
parse gen 3 2 9 0.328
files gen 3 1 8 0.359
asdl_generated gen 3 2 7 0.420
scoped_resource gen 3 1 7 0.431
cgi gen 4 3 6 0.665
escape gen 5 6 7 0.718
varargs gen 25 25 27 0.936
length gen 4 4 4 0.998
cartesian gen 8 3 3 2.645

raw benchmark files