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 2 177 0.005
fib_iter gen 6 8 965 0.006
loops gen 2 1 291 0.006
fib_recursive gen 9 9 885 0.010
asdl_generated gen 8 10 384 0.020
parse gen 26 26 800 0.033
scoped_resource gen 44 42 1,036 0.042
containers gen 8 5 111 0.070
files gen 6 7 68 0.083
tuple_return_value gen 16 17 194 0.084
classes gen 2 3 22 0.094
gc_stack_roots gen 1 0 4 0.194
length gen 42 42 200 0.210
cartesian gen 85 76 340 0.249
escape gen 99 108 352 0.281
cgi gen 269 266 515 0.522
varargs gen 23 24 25 0.907
control_flow gen 206 160 110 1.879

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.6 0.42
cartesian gen 3.5 3.5 7.1 0.50
parse gen 3.8 3.8 7.6 0.50
files gen 3.5 3.8 6.9 0.51
gc_stack_roots gen 3.5 3.4 6.9 0.51
loops gen 3.7 3.8 7.1 0.52
modules gen 3.7 3.8 7.1 0.52
scoped_resource gen 3.7 3.7 7.1 0.52
asdl_generated gen 3.7 3.7 6.9 0.53
cgi gen 3.7 3.5 6.9 0.53
escape gen 3.7 3.7 6.9 0.53
fib_recursive gen 3.7 3.8 6.9 0.53
tuple_return_value gen 3.7 3.7 6.9 0.53
control_flow gen 3.7 3.8 6.8 0.54
fib_iter gen 3.8 3.7 6.9 0.55
length gen 3.8 3.9 6.9 0.55
containers gen 28.8 28.8 48.0 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
gc_stack_roots gen 1 2 7 0.129
classes gen 1 0 8 0.129
control_flow gen 1 0 6 0.166
containers gen 4 5 22 0.175
modules gen 1 0 4 0.221
files gen 2 1 7 0.268
fib_iter gen 2 0 7 0.271
loops gen 2 2 6 0.296
fib_recursive gen 2 2 6 0.325
length gen 3 2 9 0.334
cgi gen 2 3 6 0.334
asdl_generated gen 3 1 7 0.420
parse gen 3 1 7 0.430
scoped_resource gen 4 3 8 0.499
varargs gen 17 17 19 0.882
tuple_return_value gen 4 2 4 0.962
escape gen 8 2 6 1.330
cartesian gen 7 10 3 2.327

raw benchmark files