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 19 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 292 0.000
modules gen 0 174 0.000
fib_iter gen 8 899 0.008
fib_recursive gen 11 899 0.012
asdl_generated gen 7 371 0.020
parse gen 26 775 0.034
scoped_resource gen 47 1,034 0.046
files gen 4 71 0.054
containers gen 12 116 0.101
tuple_return_value gen 20 181 0.111
length gen 45 202 0.222
cartesian gen 83 330 0.250
escape gen 107 343 0.311
cgi gen 269 514 0.524
varargs gen 20 24 0.819
control_flow gen 209 112 1.861

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.8 0.41
gc_stack_roots gen 3.4 6.9 0.49
cgi gen 3.5 7.1 0.50
parse gen 3.9 7.6 0.52
modules gen 3.7 7.1 0.52
cartesian gen 3.5 6.8 0.52
asdl_generated gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
scoped_resource gen 3.8 7.1 0.54
fib_iter gen 3.8 6.9 0.55
fib_recursive gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
tuple_return_value gen 3.8 6.9 0.55
files gen 3.8 6.8 0.56
control_flow gen 3.9 6.9 0.57
containers gen 28.7 47.8 0.60
varargs gen 5.5 7.1 0.78

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
cgi gen 0 4 0.000
control_flow gen 0 4 0.000
escape gen 0 8 0.000
fib_recursive gen 0 4 0.000
length gen 0 8 0.000
scoped_resource gen 0 4 0.000
tuple_return_value gen 0 12 0.000
containers gen 4 20 0.195
modules gen 2 8 0.223
classes gen 3 11 0.283
asdl_generated gen 4 12 0.301
gc_stack_roots gen 2 4 0.451
parse gen 4 8 0.465
loops gen 4 8 0.478
files gen 4 4 0.978
varargs gen 47 48 0.982
cartesian gen 8 8 0.988
fib_iter gen 0 0 NA

raw benchmark files