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
modules 1 221 0.004
fib_iter 6 833 0.008
scoped_resource 9 1,064 0.008
fib_recursive 10 1,212 0.009
loops 3 370 0.009
asdl_generated 14 539 0.026
parse 39 1,041 0.037
containers 5 105 0.043
tuple_return_value 25 274 0.090
classes 2 24 0.099
files 8 78 0.107
classes_gc 2 13 0.121
strings 1 8 0.123
cgi 166 821 0.202
length 54 255 0.213
iterators 1 4 0.253
arith_ops 1 4 0.274
cartesian 121 433 0.278
escape 144 446 0.322
varargs 4 10 0.372
control_flow 254 140 1.810

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.3 11.0 0.39
classes_gc 3.9 9.4 0.41
loops 3.5 7.5 0.46
iterators 3.5 7.4 0.47
parse 3.7 7.7 0.48
strings 3.6 7.3 0.49
scoped_resource 3.6 7.3 0.49
cartesian 3.5 7.2 0.49
escape 3.6 7.3 0.49
fib_iter 3.7 7.5 0.49
files 3.7 7.4 0.50
modules 3.7 7.4 0.50
cgi 3.7 7.3 0.50
control_flow 3.6 7.2 0.50
arith_ops 3.7 7.3 0.50
varargs 3.7 7.2 0.51
asdl_generated 3.7 7.2 0.51
tuple_return_value 3.7 7.2 0.52
fib_recursive 3.7 7.2 0.52
length 3.8 7.3 0.52
containers 28.4 47.8 0.59

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
arith_ops 0 4 0.000
cgi 0 4 0.000
classes 0 4 0.000
fib_iter 0 4 0.000
files 0 4 0.000
iterators 0 4 0.000
length 0 4 0.000
scoped_resource 0 4 0.000
tuple_return_value 0 4 0.000
containers 9 12 0.750
cartesian 4 0 inf
asdl_generated 0 0 NA
classes_gc 0 0 NA
control_flow 0 0 NA
escape 0 0 NA
fib_recursive 0 0 NA
loops 0 0 NA
modules 0 0 NA
parse 0 0 NA
strings 0 0 NA
varargs 0 0 NA

raw benchmark files