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 31 0.000
gc_stack_roots gen 0 8 0.000
modules gen 0 171 0.000
fib_recursive gen 7 889 0.008
fib_iter gen 8 891 0.008
asdl_generated gen 4 376 0.010
loops gen 4 292 0.013
parse gen 27 784 0.034
scoped_resource gen 43 1,063 0.041
containers gen 8 122 0.067
tuple_return_value gen 21 188 0.111
files gen 8 65 0.119
length gen 44 197 0.221
cartesian gen 86 326 0.265
escape gen 107 347 0.310
cgi gen 255 518 0.491
control_flow gen 204 99 2.067
varargs gen 45 20 2.241

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.7 0.41
cgi gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
loops gen 3.7 7.1 0.52
modules gen 3.7 7.1 0.52
parse gen 3.9 7.5 0.53
asdl_generated gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
length gen 3.8 7.1 0.54
cartesian gen 3.7 6.8 0.54
escape gen 3.7 6.8 0.54
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
scoped_resource gen 3.8 6.9 0.55
control_flow gen 3.9 6.9 0.57
containers gen 28.5 47.7 0.60
varargs gen 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
cgi gen 0 4 0.000
escape gen 0 4 0.000
fib_iter gen 0 8 0.000
files gen 0 11 0.000
loops gen 0 4 0.000
tuple_return_value gen 0 8 0.000
modules gen 2 12 0.154
control_flow gen 4 16 0.253
scoped_resource gen 4 12 0.327
length gen 4 12 0.328
varargs gen 20 52 0.392
fib_recursive gen 4 8 0.450
gc_stack_roots gen 2 4 0.458
cartesian gen 4 8 0.493
containers gen 8 16 0.503
asdl_generated gen 7 4 1.813
classes gen 3 0 inf
parse gen 4 0 inf

raw benchmark files