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 116 0.000
fib_recursive 7 943 0.008
fib_iter 8 882 0.009
modules 2 178 0.010
loops 4 293 0.013
asdl_generated 11 373 0.029
scoped_resource 40 1,071 0.037
parse 29 771 0.038
tuple_return_value 20 190 0.107
files 8 68 0.114
length 40 200 0.201
cartesian 86 322 0.268
escape 101 339 0.297
cgi 264 513 0.514
varargs 17 20 0.842
control_flow 210 106 1.981

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.9 0.41
files 3.4 6.9 0.49
parse 3.7 7.5 0.49
escape 3.5 6.9 0.51
asdl_generated 3.7 7.1 0.52
cartesian 3.7 7.1 0.52
fib_recursive 3.7 7.1 0.52
tuple_return_value 3.7 6.9 0.53
control_flow 3.8 7.1 0.54
loops 3.8 7.1 0.54
scoped_resource 3.8 7.1 0.54
fib_iter 3.8 6.9 0.55
cgi 3.7 6.7 0.55
length 3.8 6.8 0.56
modules 3.8 6.8 0.56
containers 28.7 47.7 0.60
varargs 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
asdl_generated 0 8 0.000
control_flow 0 8 0.000
fib_iter 0 8 0.000
files 0 8 0.000
loops 0 8 0.000
modules 0 8 0.000
parse 0 4 0.000
tuple_return_value 0 4 0.000
classes 3 12 0.278
escape 4 12 0.323
cartesian 4 8 0.493
length 4 8 0.503
containers 16 20 0.777
fib_recursive 4 4 0.902
varargs 50 52 0.971
scoped_resource 8 8 0.993
cgi 4 4 0.997

raw benchmark files