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 C++ Python C++ : Python
classes 0 19 0.000
containers 0 118 0.000
modules 0 185 0.000
fib_iter 4 890 0.004
fib_recursive 11 892 0.012
loops 4 298 0.012
asdl_generated 11 379 0.029
parse 25 775 0.033
scoped_resource 47 1,060 0.044
files 7 71 0.104
tuple_return_value 20 183 0.109
length 41 198 0.208
cartesian 86 330 0.261
escape 110 350 0.314
cgi 265 511 0.518
varargs 16 20 0.799
control_flow 208 106 1.962

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name C++ Python C++ : Python
classes 4.5 10.6 0.42
fib_iter 3.5 7.1 0.50
parse 3.8 7.6 0.50
cartesian 3.5 6.9 0.51
cgi 3.5 6.9 0.51
scoped_resource 3.7 7.1 0.52
loops 3.8 7.2 0.53
asdl_generated 3.7 6.9 0.53
control_flow 3.7 6.9 0.53
escape 3.7 6.9 0.53
tuple_return_value 3.7 6.9 0.53
fib_recursive 3.8 6.9 0.55
files 3.8 6.9 0.55
length 3.8 6.9 0.55
modules 3.8 6.9 0.55
containers 28.4 47.8 0.59
varargs 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
control_flow 0 8 0.000
fib_recursive 0 8 0.000
files 0 4 0.000
loops 0 4 0.000
scoped_resource 0 8 0.000
tuple_return_value 0 8 0.000
modules 2 8 0.227
classes 3 11 0.282
length 4 12 0.315
fib_iter 4 8 0.477
cgi 4 8 0.498
cartesian 4 8 0.516
containers 15 16 0.968
escape 4 4 0.985
varargs 52 52 0.999
parse 4 4 1.056
asdl_generated 0 0 NA

raw benchmark files