mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oils/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 1 1 233 0.000
fib_recursive gen 5 5 6 1,079 0.005
fib_iter gen 6 5 7 971 0.006
loops gen 2 3 2 357 0.007
asdl_generated gen 8 7 9 526 0.015
scoped_resource gen 28 29 29 1,385 0.021
parse gen 23 26 23 941 0.025
containers gen 4 5 4 123 0.031
files gen 6 4 6 99 0.060
classes gen 2 3 1 29 0.061
tuple_return_value gen 15 11 12 242 0.061
gc_stack_roots gen 1 0 1 14 0.094
length gen 35 31 35 245 0.142
cartesian gen 68 71 71 405 0.167
escape gen 92 98 91 432 0.213
cgi gen 255 248 260 728 0.350
varargs gen 17 21 16 28 0.598
control_flow gen 135 177 132 151 0.893

Max Resident Set Size (MB)

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

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 4.3 4.5 4.5 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.5 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
escape gen 3.4 3.5 3.4 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.4 3.4 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
tuple_return_value gen 3.8 3.8 3.7 7.7 0.49
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.6 5.5 5.5 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 3 3 0.000
gc_stack_roots gen 0 1 1 6 0.000
loops gen 0 0 1 8 0.000
tuple_return_value gen 0 5 3 11 0.000
classes gen 1 0 2 13 0.068
fib_recursive gen 1 1 0 8 0.130
fib_iter gen 1 2 0 7 0.143
modules gen 1 0 0 8 0.176
asdl_generated gen 2 3 1 9 0.220
scoped_resource gen 2 3 1 9 0.226
files gen 2 3 1 7 0.282
parse gen 2 1 2 7 0.289
containers gen 10 9 9 27 0.355
cgi gen 4 3 0 8 0.501
length gen 4 5 4 7 0.567
escape gen 6 7 7 8 0.752
varargs gen 21 16 22 27 0.766
cartesian gen 7 9 4 5 1.412

raw benchmark files