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 177 0.005
loops gen 2 2 291 0.006
fib_iter gen 6 7 893 0.006
fib_recursive gen 11 9 919 0.012
asdl_generated gen 10 8 413 0.024
parse gen 26 24 760 0.034
scoped_resource gen 46 42 1,047 0.044
containers gen 8 6 110 0.071
files gen 6 8 69 0.082
tuple_return_value gen 18 17 195 0.094
classes gen 3 2 20 0.154
length gen 44 36 211 0.208
gc_stack_roots gen 2 1 6 0.260
cartesian gen 85 82 323 0.263
escape gen 104 106 350 0.297
cgi gen 267 253 516 0.518
varargs gen 20 21 26 0.779
control_flow gen 210 159 108 1.954

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.4 6.9 0.49
parse gen 3.8 3.8 7.6 0.50
asdl_generated gen 3.5 3.5 6.9 0.51
cartesian gen 3.5 3.8 6.9 0.51
escape gen 3.5 3.7 6.9 0.51
files gen 3.7 3.7 7.1 0.52
cgi gen 3.7 3.7 6.9 0.53
loops gen 3.8 3.7 7.1 0.54
modules gen 3.8 3.7 7.1 0.54
scoped_resource gen 3.8 3.8 7.1 0.54
control_flow gen 3.8 3.8 6.9 0.55
fib_iter gen 3.8 3.5 6.9 0.55
fib_recursive gen 3.8 3.8 6.9 0.55
tuple_return_value gen 3.8 3.8 6.9 0.55
length gen 3.8 3.7 6.8 0.56
containers gen 28.8 28.8 47.7 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
classes gen 0 1 10 0.000
fib_recursive gen 0 2 6 0.000
gc_stack_roots gen 0 1 5 0.000
containers gen 4 4 24 0.164
length gen 1 9 6 0.166
modules gen 1 2 5 0.173
asdl_generated gen 1 3 4 0.247
loops gen 2 1 7 0.259
scoped_resource gen 2 3 7 0.286
fib_iter gen 2 1 6 0.314
tuple_return_value gen 2 2 6 0.320
files gen 2 0 6 0.321
control_flow gen 2 2 6 0.330
parse gen 3 2 9 0.335
cgi gen 2 1 5 0.400
escape gen 4 4 7 0.573
cartesian gen 6 4 7 0.859
varargs gen 20 18 19 1.066

raw benchmark files