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++ Python C++ : Python
classes gen 0 27 0.000
fib_iter gen 8 899 0.008
modules gen 2 175 0.012
fib_recursive gen 11 900 0.012
loops gen 4 300 0.012
asdl_generated gen 11 376 0.029
parse gen 29 772 0.038
containers gen 4 101 0.040
scoped_resource gen 43 1,048 0.041
files gen 4 68 0.055
tuple_return_value gen 16 188 0.086
length gen 44 203 0.218
cartesian gen 73 322 0.227
escape gen 89 360 0.248
cgi gen 255 513 0.497
varargs gen 23 24 0.957
control_flow gen 210 106 1.976
gc_stack_roots gen 0 0 NA

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name gen C++ Python C++ : Python
classes gen 4.6 10.7 0.43
gc_stack_roots gen 3.4 6.9 0.49
parse gen 3.7 7.5 0.49
cartesian gen 3.4 6.8 0.50
escape gen 3.5 6.9 0.51
asdl_generated gen 3.7 7.1 0.52
fib_recursive gen 3.7 7.1 0.52
cgi gen 3.7 6.9 0.53
fib_iter gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
control_flow gen 3.7 6.8 0.54
files gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
scoped_resource gen 3.8 6.9 0.55
containers gen 28.5 47.7 0.60
varargs gen 5.5 7.1 0.78

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 4 0.000
cgi gen 0 12 0.000
control_flow gen 0 8 0.000
fib_iter gen 0 4 0.000
fib_recursive gen 0 4 0.000
length gen 0 8 0.000
modules gen 0 8 0.000
parse gen 0 4 0.000
gc_stack_roots gen 2 12 0.176
containers gen 12 36 0.330
files gen 4 11 0.330
tuple_return_value gen 4 12 0.345
scoped_resource gen 4 8 0.534
classes gen 3 4 0.831
varargs gen 43 49 0.877
cartesian gen 16 8 2.040
escape gen 16 4 4.065
loops gen 0 0 NA

raw benchmark files