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
gc_stack_roots gen 0 3 0.000
loops gen 0 288 0.000
fib_iter gen 8 894 0.008
modules gen 2 178 0.010
fib_recursive gen 11 879 0.012
parse gen 22 775 0.028
asdl_generated gen 11 376 0.029
scoped_resource gen 47 1,023 0.046
containers gen 8 119 0.066
files gen 8 71 0.108
tuple_return_value gen 20 184 0.109
classes gen 3 20 0.169
length gen 40 202 0.198
cartesian gen 87 325 0.267
escape gen 107 357 0.301
cgi gen 265 508 0.521
varargs gen 19 20 0.969
control_flow gen 205 105 1.944

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.9 7.6 0.52
asdl_generated gen 3.7 7.1 0.52
cartesian gen 3.7 7.1 0.52
loops gen 3.8 7.2 0.53
cgi gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
modules gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
fib_recursive gen 3.8 7.1 0.54
scoped_resource 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
files gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
containers gen 28.6 47.6 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 8 0.000
classes gen 0 12 0.000
escape gen 0 8 0.000
fib_iter gen 0 12 0.000
fib_recursive gen 0 4 0.000
files gen 0 4 0.000
modules gen 0 4 0.000
scoped_resource gen 0 12 0.000
tuple_return_value gen 0 8 0.000
gc_stack_roots gen 2 9 0.198
loops gen 4 12 0.312
control_flow gen 4 12 0.343
containers gen 8 20 0.397
cgi gen 4 8 0.494
length gen 4 8 0.496
varargs gen 47 52 0.895
cartesian gen 4 4 1.041
parse gen 7 0 inf

raw benchmark files