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 304 0.004
fib_iter 8 1,167 0.007
scoped_resource 9 1,229 0.007
loops 4 450 0.008
fib_recursive 13 1,393 0.009
asdl_generated 34 670 0.050
parse 83 1,121 0.074
arith_ops 1 16 0.079
classes_gc 2 18 0.109
strings 1 9 0.123
classes 3 26 0.125
files 15 112 0.138
tuple_return_value 46 317 0.144
containers 24 167 0.145
cgi 237 898 0.264
iterators 1 5 0.286
varargs 4 12 0.310
length 131 335 0.392
escape 237 518 0.457
cartesian 318 525 0.606
control_flow 350 152 2.296

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.4 11.4 0.39
classes_gc 4.0 9.8 0.41
parse 3.6 8.1 0.45
iterators 3.5 7.7 0.45
files 3.6 7.7 0.46
strings 3.6 7.8 0.46
asdl_generated 3.5 7.7 0.46
escape 3.6 7.6 0.47
cartesian 3.6 7.7 0.47
loops 3.7 7.8 0.47
modules 3.7 7.8 0.48
fib_recursive 3.7 7.6 0.48
arith_ops 3.6 7.5 0.48
scoped_resource 3.7 7.7 0.48
length 3.7 7.7 0.48
cgi 3.7 7.6 0.49
control_flow 3.7 7.6 0.49
fib_iter 3.7 7.5 0.49
tuple_return_value 3.7 7.6 0.49
varargs 3.8 7.6 0.49
containers 27.9 48.3 0.58

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
asdl_generated 0 4 0.000
classes 0 4 0.000
escape 0 4 0.000
fib_iter 0 8 0.000
fib_recursive 0 8 0.000
files 0 4 0.000
iterators 0 5 0.000
loops 0 4 0.000
modules 0 8 0.000
scoped_resource 0 8 0.000
tuple_return_value 0 8 0.000
containers 20 24 0.844
varargs 4 4 0.929
cgi 4 0 inf
arith_ops 0 0 NA
cartesian 0 0 NA
classes_gc 0 0 NA
control_flow 0 0 NA
length 0 0 NA
parse 0 0 NA
strings 0 0 NA

raw benchmark files