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 23 0.000
fib_recursive gen 7 892 0.008
fib_iter gen 8 903 0.008
modules gen 2 187 0.009
loops gen 4 291 0.012
asdl_generated gen 11 374 0.029
parse gen 25 769 0.033
scoped_resource gen 40 1,023 0.039
files gen 4 63 0.060
tuple_return_value gen 12 188 0.065
containers gen 12 97 0.121
length gen 40 202 0.200
cartesian gen 83 326 0.255
escape gen 98 346 0.283
gc_stack_roots gen 2 4 0.447
cgi gen 264 512 0.516
varargs gen 21 24 0.867
control_flow gen 203 104 1.958

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 8 0.000
fib_iter gen 0 4 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 8 0.000
modules gen 0 4 0.000
containers gen 4 40 0.096
files gen 4 12 0.319
classes gen 3 8 0.415
fib_recursive gen 4 8 0.445
control_flow gen 4 8 0.499
length gen 4 8 0.509
parse gen 4 8 0.520
scoped_resource gen 8 12 0.659
varargs gen 46 48 0.954
cgi gen 4 4 1.001
escape gen 8 8 1.026
cartesian gen 8 4 1.966
tuple_return_value gen 8 4 2.034

raw benchmark files