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 4 938 0.008
modules gen 2 2 180 0.010
fib_recursive gen 11 11 883 0.012
loops gen 4 0 288 0.013
asdl_generated gen 7 11 378 0.019
parse gen 26 27 783 0.033
scoped_resource gen 45 34 1,020 0.044
containers gen 8 4 110 0.073
tuple_return_value gen 16 18 182 0.091
files gen 8 8 70 0.111
length gen 29 45 203 0.140
classes gen 3 3 16 0.215
cartesian gen 81 87 316 0.256
escape gen 96 96 344 0.280
cgi gen 270 265 516 0.522
varargs gen 29 24 19 1.522
control_flow gen 206 159 108 1.902
gc_stack_roots gen 2 2 0 inf

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.9 0.41
fib_iter gen 3.5 3.7 7.1 0.50
parse gen 3.8 3.8 7.6 0.50
cartesian gen 3.5 3.5 6.9 0.51
gc_stack_roots gen 3.5 3.5 6.9 0.51
scoped_resource gen 3.5 3.5 6.9 0.51
length gen 3.7 3.8 7.1 0.52
cgi gen 3.7 3.5 6.9 0.53
control_flow gen 3.7 3.8 6.9 0.53
files gen 3.8 3.8 7.1 0.54
loops gen 3.8 3.8 7.1 0.54
asdl_generated gen 3.7 3.7 6.8 0.54
fib_recursive gen 3.8 3.7 6.9 0.55
tuple_return_value gen 3.8 3.8 6.9 0.55
modules gen 3.9 3.7 7.1 0.56
escape gen 3.8 3.7 6.8 0.56
containers gen 28.5 28.7 47.5 0.60
varargs gen 5.6 5.5 7.1 0.80

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cgi gen 0 4 4 0.000
classes gen 0 0 16 0.000
fib_iter gen 0 4 8 0.000
fib_recursive gen 0 0 4 0.000
files gen 0 0 8 0.000
gc_stack_roots gen 0 0 12 0.000
loops gen 0 3 16 0.000
modules gen 0 0 4 0.000
containers gen 8 11 27 0.290
tuple_return_value gen 4 0 12 0.341
control_flow gen 4 4 8 0.494
scoped_resource gen 4 11 8 0.506
escape gen 8 8 12 0.668
varargs gen 38 41 54 0.699
cartesian gen 12 0 16 0.732
length gen 16 0 8 2.045
asdl_generated gen 4 0 0 inf
parse gen 4 0 0 inf

raw benchmark files