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
containers gen 0 121 0.000
gc_stack_roots gen 0 8 0.000
modules gen 0 179 0.000
fib_iter gen 8 908 0.008
fib_recursive gen 11 896 0.012
loops gen 4 290 0.013
asdl_generated gen 11 397 0.027
parse gen 26 782 0.033
scoped_resource gen 41 1,046 0.040
tuple_return_value gen 20 194 0.104
files gen 7 68 0.109
length gen 45 250 0.180
classes gen 3 16 0.205
cartesian gen 82 336 0.245
escape gen 105 340 0.309
cgi gen 264 499 0.528
varargs gen 16 24 0.650
control_flow gen 210 103 2.035

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.5 10.6 0.42
gc_stack_roots gen 3.5 7.1 0.50
asdl_generated gen 3.5 6.9 0.51
cartesian gen 3.5 6.9 0.51
parse gen 3.9 7.6 0.52
cgi gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
modules gen 3.8 7.1 0.54
scoped_resource gen 3.8 7.1 0.54
tuple_return_value gen 3.8 7.1 0.54
control_flow gen 3.8 6.9 0.55
fib_iter gen 3.8 6.9 0.55
fib_recursive gen 3.8 6.9 0.55
files gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
containers gen 28.4 47.7 0.60
varargs gen 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 4 0.000
classes gen 0 16 0.000
control_flow gen 0 12 0.000
fib_recursive gen 0 8 0.000
files gen 0 8 0.000
length gen 0 12 0.000
loops gen 0 8 0.000
tuple_return_value gen 0 4 0.000
escape gen 4 16 0.255
parse gen 4 12 0.308
cgi gen 4 12 0.333
modules gen 2 4 0.442
gc_stack_roots gen 2 4 0.465
containers gen 15 16 0.949
cartesian gen 8 8 0.981
varargs gen 51 48 1.057
scoped_resource gen 8 4 1.882
fib_iter gen 0 0 NA

raw benchmark files