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 4 0.000
loops gen 0 300 0.000
fib_iter gen 8 889 0.009
asdl_generated gen 4 386 0.009
modules gen 2 175 0.010
fib_recursive gen 11 875 0.012
parse gen 25 761 0.033
scoped_resource gen 44 1,038 0.042
tuple_return_value gen 16 185 0.087
files gen 7 76 0.097
containers gen 12 100 0.116
classes gen 3 22 0.150
length gen 42 204 0.204
cartesian gen 80 320 0.249
escape gen 103 354 0.292
varargs gen 8 16 0.508
cgi gen 261 511 0.511
control_flow gen 209 105 1.987

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
parse gen 3.9 7.6 0.52
asdl_generated gen 3.7 7.1 0.52
cartesian gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
fib_recursive gen 3.7 6.9 0.53
gc_stack_roots gen 3.7 6.9 0.53
length gen 3.7 6.9 0.53
loops 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
files gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
containers gen 28.5 47.8 0.60
varargs gen 5.5 6.8 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
classes gen 0 9 0.000
control_flow gen 0 8 0.000
fib_iter gen 0 4 0.000
fib_recursive gen 0 12 0.000
modules gen 0 8 0.000
containers gen 4 40 0.097
gc_stack_roots gen 2 8 0.225
parse gen 4 12 0.348
tuple_return_value gen 4 8 0.511
length gen 4 4 0.946
scoped_resource gen 4 4 0.996
cgi gen 8 8 1.006
varargs gen 58 57 1.017
cartesian gen 12 8 1.492
asdl_generated gen 7 4 1.793
escape gen 4 0 inf
loops gen 4 0 inf
files gen 0 0 NA

raw benchmark files