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
fib_iter gen 8 7 930 0.009
fib_recursive gen 9 12 924 0.010
modules gen 2 1 190 0.012
loops gen 4 4 302 0.014
asdl_generated gen 12 11 398 0.031
parse gen 30 31 827 0.036
scoped_resource gen 49 46 1,081 0.045
containers gen 8 5 137 0.056
classes gen 2 1 26 0.070
tuple_return_value gen 21 18 206 0.101
files gen 8 7 72 0.105
gc_stack_roots gen 1 1 6 0.130
length gen 44 44 209 0.211
cartesian gen 98 91 347 0.281
escape gen 107 108 365 0.292
cgi gen 278 283 538 0.517
varargs gen 20 21 22 0.918
control_flow gen 221 170 113 1.958

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.5 4.5 10.8 0.41
gc_stack_roots gen 3.4 3.5 7.1 0.48
fib_iter gen 3.5 3.8 6.9 0.51
parse gen 3.9 3.9 7.6 0.52
cartesian gen 3.7 3.7 7.1 0.52
escape gen 3.7 3.5 7.1 0.52
loops gen 3.7 3.8 7.1 0.52
scoped_resource gen 3.7 3.8 7.1 0.52
asdl_generated gen 3.7 3.7 6.9 0.53
cgi gen 3.7 3.7 6.9 0.53
modules gen 3.7 3.5 6.9 0.53
tuple_return_value gen 3.8 3.9 7.1 0.54
files gen 3.8 3.8 6.9 0.55
control_flow gen 3.9 3.7 7.1 0.56
fib_recursive gen 3.9 3.8 7.1 0.56
length gen 3.8 3.8 6.8 0.56
containers gen 28.8 28.6 47.6 0.60
varargs gen 5.6 5.5 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
modules gen 0 2 5 0.000
asdl_generated gen 1 3 10 0.103
fib_iter gen 1 2 7 0.134
loops gen 1 0 6 0.181
gc_stack_roots gen 2 1 7 0.223
classes gen 2 3 8 0.226
containers gen 7 7 29 0.232
files gen 2 2 8 0.270
tuple_return_value gen 2 3 6 0.344
parse gen 3 2 7 0.425
fib_recursive gen 3 1 7 0.430
control_flow gen 3 3 5 0.595
scoped_resource gen 4 3 5 0.797
varargs gen 24 24 27 0.897
cartesian gen 4 2 4 0.994
length gen 5 5 5 1.004
cgi gen 7 1 6 1.167
escape gen 8 8 5 1.594

raw benchmark files