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 1 179 0.005
fib_iter gen 6 7 909 0.006
fib_recursive gen 9 9 886 0.010
loops gen 3 2 294 0.010
asdl_generated gen 11 9 378 0.028
parse gen 27 25 782 0.035
scoped_resource gen 42 44 1,075 0.039
containers gen 7 6 112 0.061
files gen 7 5 71 0.094
tuple_return_value gen 18 17 189 0.096
classes gen 2 2 19 0.109
length gen 42 42 206 0.203
cartesian gen 85 81 328 0.258
gc_stack_roots gen 2 1 6 0.278
escape gen 103 99 356 0.291
cgi gen 267 262 515 0.518
control_flow gen 208 162 107 1.948
varargs gen 23 20 10 2.302

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
gc_stack_roots gen 3.4 3.5 6.9 0.49
cartesian gen 3.5 3.8 7.1 0.50
parse gen 3.8 3.8 7.5 0.51
fib_iter gen 3.7 3.8 7.1 0.52
length gen 3.7 3.8 7.1 0.52
loops gen 3.7 3.8 7.1 0.52
asdl_generated gen 3.7 3.8 6.9 0.53
cgi gen 3.7 3.8 6.9 0.53
fib_recursive gen 3.7 3.7 6.9 0.53
files gen 3.7 3.8 6.9 0.53
scoped_resource gen 3.7 3.5 6.9 0.53
tuple_return_value gen 3.7 3.7 6.9 0.53
escape gen 3.8 3.7 6.9 0.55
modules gen 3.8 3.7 6.9 0.55
control_flow gen 3.9 3.9 6.9 0.57
containers gen 28.8 28.8 47.6 0.60
varargs gen 5.4 5.6 7.1 0.76

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
asdl_generated gen 0 2 4 0.000
control_flow gen 0 1 8 0.000
gc_stack_roots gen 0 1 5 0.000
classes gen 1 1 11 0.094
loops gen 1 1 7 0.142
files gen 1 3 6 0.157
modules gen 1 1 4 0.214
containers gen 5 4 22 0.220
fib_recursive gen 2 2 7 0.280
parse gen 2 2 7 0.287
fib_iter gen 2 1 6 0.317
tuple_return_value gen 2 2 6 0.337
varargs gen 17 20 35 0.486
scoped_resource gen 5 2 9 0.558
cgi gen 3 7 5 0.599
escape gen 3 10 4 0.746
cartesian gen 6 5 6 0.993
length gen 3 3 3 0.994

raw benchmark files