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 1 0 0 210 0.005
fib_recursive gen 5 6 4 996 0.006
loops gen 2 2 2 309 0.007
fib_iter gen 6 5 6 747 0.009
asdl_generated gen 10 10 10 512 0.019
parse gen 21 24 23 903 0.023
scoped_resource gen 29 31 28 1,227 0.024
containers gen 3 6 8 100 0.030
classes gen 1 0 2 32 0.035
files gen 5 5 6 88 0.057
tuple_return_value gen 13 16 13 226 0.059
gc_stack_roots gen 1 0 0 14 0.075
length gen 31 31 32 227 0.137
cartesian gen 67 69 67 364 0.185
escape gen 82 94 85 386 0.214
cgi gen 183 178 183 654 0.280
varargs gen 10 9 16 21 0.472
control_flow gen 124 167 126 135 0.921

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.5 4.3 4.5 11.6 0.38
asdl_generated gen 3.4 3.4 3.4 7.9 0.43
gc_stack_roots gen 3.4 3.3 3.4 7.9 0.43
escape gen 3.5 3.5 3.5 7.9 0.45
parse gen 3.7 3.9 3.7 8.1 0.45
cartesian gen 3.5 3.7 3.5 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.8 7.7 0.47
length gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
scoped_resource gen 3.7 3.5 3.4 7.7 0.47
modules gen 3.7 3.5 3.8 7.6 0.48
fib_recursive gen 3.7 3.7 3.5 7.5 0.49
control_flow gen 3.8 3.8 3.9 7.7 0.49
files gen 3.8 3.9 3.8 7.7 0.49
tuple_return_value gen 3.8 3.9 3.8 7.7 0.49
containers gen 28.5 28.5 28.5 48.5 0.59
varargs gen 5.6 5.6 5.6 7.9 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 0 0 5 0.000
fib_iter gen 0 1 0 4 0.000
fib_recursive gen 0 0 1 3 0.000
gc_stack_roots gen 0 1 1 2 0.000
loops gen 0 1 0 6 0.000
modules gen 0 1 1 6 0.000
scoped_resource gen 0 2 2 3 0.000
classes gen 1 2 0 7 0.160
files gen 1 1 0 6 0.167
control_flow gen 1 2 1 4 0.251
length gen 1 1 0 4 0.251
tuple_return_value gen 1 0 1 4 0.256
containers gen 10 6 4 30 0.331
cartesian gen 2 5 2 5 0.398
cgi gen 3 1 3 7 0.428
parse gen 3 2 1 6 0.498
escape gen 3 1 2 5 0.604
varargs gen 14 15 8 16 0.868

raw benchmark files