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
gc_stack_roots gen 0 1 6 0.000
modules gen 0 2 183 0.000
loops gen 2 2 299 0.006
fib_iter gen 6 6 898 0.007
fib_recursive gen 11 10 892 0.012
asdl_generated gen 6 10 380 0.016
parse gen 26 26 784 0.034
scoped_resource gen 45 39 1,053 0.043
files gen 4 6 68 0.056
containers gen 7 7 105 0.067
tuple_return_value gen 19 16 189 0.101
classes gen 3 2 20 0.153
length gen 40 39 201 0.198
cartesian gen 85 81 328 0.259
escape gen 104 107 352 0.295
cgi gen 266 261 523 0.509
varargs gen 25 14 18 1.396
control_flow gen 206 161 109 1.898

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
scoped_resource gen 3.5 3.7 7.1 0.50
cgi gen 3.5 3.5 6.9 0.51
gc_stack_roots gen 3.5 3.5 6.9 0.51
parse gen 3.9 3.8 7.6 0.52
asdl_generated gen 3.7 3.7 7.1 0.52
fib_iter gen 3.7 3.8 7.1 0.52
cartesian gen 3.7 3.7 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
length gen 3.7 3.8 6.9 0.53
loops gen 3.9 3.8 7.2 0.55
control_flow gen 3.8 3.7 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
tuple_return_value gen 3.8 3.8 6.9 0.55
files gen 3.9 3.5 7.1 0.56
containers gen 28.6 28.6 47.6 0.60
varargs gen 5.4 5.5 7.1 0.76

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 1 6 0.000
containers gen 5 4 31 0.162
tuple_return_value gen 1 3 6 0.168
fib_iter gen 1 1 6 0.180
parse gen 3 1 12 0.244
loops gen 2 1 7 0.263
modules gen 2 0 6 0.288
gc_stack_roots gen 2 1 5 0.336
escape gen 3 6 6 0.501
files gen 4 1 7 0.547
varargs gen 15 26 27 0.559
control_flow gen 4 2 7 0.574
length gen 5 5 7 0.717
scoped_resource gen 3 7 3 0.999
asdl_generated gen 5 1 5 1.043
cartesian gen 6 5 5 1.198
cgi gen 4 7 3 1.331

raw benchmark files