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 891 0.008
modules gen 2 0 191 0.009
fib_recursive gen 10 9 943 0.010
loops gen 4 3 291 0.012
asdl_generated gen 10 10 382 0.026
parse gen 27 23 783 0.034
classes gen 1 1 22 0.036
scoped_resource gen 44 40 1,061 0.042
containers gen 5 5 107 0.046
files gen 6 8 70 0.090
tuple_return_value gen 17 16 187 0.093
gc_stack_roots gen 1 0 6 0.146
length gen 40 40 202 0.198
cartesian gen 84 78 342 0.245
escape gen 103 103 352 0.291
cgi gen 254 265 524 0.485
varargs gen 16 23 14 1.162
control_flow gen 209 161 112 1.870

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

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 0 4 0.000
modules gen 0 2 6 0.000
fib_recursive gen 1 2 8 0.135
gc_stack_roots gen 1 2 6 0.146
files gen 1 0 6 0.177
containers gen 7 6 29 0.236
asdl_generated gen 1 1 4 0.244
classes gen 2 2 8 0.295
parse gen 3 4 7 0.426
control_flow gen 2 0 4 0.499
scoped_resource gen 4 6 7 0.575
tuple_return_value gen 3 3 5 0.577
length gen 4 4 6 0.668
cgi gen 3 3 4 0.748
varargs gen 24 18 31 0.787
cartesian gen 7 8 6 1.164
escape gen 5 7 3 1.674

raw benchmark files