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
modules gen 1 0 179 0.005
fib_iter gen 6 7 905 0.007
loops gen 3 2 290 0.009
fib_recursive gen 10 10 901 0.011
asdl_generated gen 9 11 379 0.023
parse gen 26 25 776 0.034
scoped_resource gen 42 38 1,037 0.040
containers gen 7 5 109 0.061
files gen 7 8 71 0.092
tuple_return_value gen 19 16 197 0.098
classes gen 3 2 23 0.140
gc_stack_roots gen 1 2 6 0.145
length gen 40 41 208 0.194
cartesian gen 83 78 332 0.250
escape gen 103 105 363 0.283
cgi gen 269 250 519 0.519
varargs gen 15 16 19 0.786
control_flow gen 208 161 111 1.867

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.7 0.41
parse gen 3.8 3.8 7.6 0.50
gc_stack_roots gen 3.5 3.5 6.9 0.51
scoped_resource gen 3.7 3.5 7.1 0.52
tuple_return_value gen 3.7 3.9 7.1 0.52
loops gen 3.8 3.8 7.2 0.53
asdl_generated gen 3.7 3.8 6.9 0.53
cgi gen 3.7 3.7 6.9 0.53
control_flow gen 3.8 3.9 7.1 0.54
modules gen 3.8 3.9 7.1 0.54
escape gen 3.7 3.7 6.8 0.54
fib_recursive gen 3.7 3.5 6.8 0.54
cartesian gen 3.8 3.7 6.9 0.55
fib_iter gen 3.8 3.7 6.9 0.55
files gen 3.8 3.7 6.8 0.56
length gen 3.8 3.8 6.8 0.56
containers gen 28.9 28.8 47.8 0.60
varargs gen 5.5 5.4 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
classes gen 0 2 8 0.000
tuple_return_value gen 1 3 8 0.121
cgi gen 1 5 7 0.143
fib_recursive gen 1 1 6 0.163
gc_stack_roots gen 1 0 5 0.174
loops gen 1 1 7 0.179
containers gen 6 6 29 0.196
files gen 1 0 5 0.218
modules gen 1 2 4 0.221
control_flow gen 2 0 8 0.249
fib_iter gen 1 1 4 0.269
asdl_generated gen 2 0 7 0.281
parse gen 3 2 8 0.380
escape gen 4 6 5 0.797
length gen 4 5 5 0.806
scoped_resource gen 6 7 7 0.848
varargs gen 26 24 26 0.996
cartesian gen 8 8 5 1.603

raw benchmark files