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
loops gen 2 3 2 390 0.004
fib_recursive gen 6 6 4 1,110 0.006
fib_iter gen 6 7 7 966 0.006
modules gen 1 1 1 231 0.006
asdl_generated gen 8 8 8 512 0.015
scoped_resource gen 29 28 25 1,424 0.020
parse gen 22 27 22 939 0.023
containers gen 5 9 5 119 0.042
files gen 4 6 5 99 0.045
classes gen 2 2 1 30 0.060
tuple_return_value gen 15 14 13 254 0.061
gc_stack_roots gen 1 0 1 12 0.125
length gen 38 33 34 247 0.154
cartesian gen 68 70 69 405 0.168
escape gen 93 100 90 433 0.216
cgi gen 257 249 260 732 0.351
varargs gen 11 19 13 21 0.528
control_flow gen 136 179 135 152 0.897

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.3 11.5 0.38
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.4 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.9 3.7 8.1 0.47
fib_iter gen 3.5 3.5 3.7 7.5 0.47
length gen 3.7 3.5 3.7 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.3 28.4 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 0 2 5 0.000
gc_stack_roots gen 0 1 0 9 0.000
length gen 0 4 5 7 0.000
modules gen 0 0 0 8 0.000
tuple_return_value gen 0 3 2 4 0.000
classes gen 1 1 1 14 0.062
loops gen 1 0 1 8 0.108
fib_iter gen 1 0 0 9 0.113
asdl_generated gen 2 2 2 10 0.198
files gen 2 1 2 9 0.249
containers gen 9 6 9 33 0.275
scoped_resource gen 3 6 6 8 0.371
cgi gen 3 2 2 8 0.376
parse gen 4 0 4 9 0.435
control_flow gen 2 1 0 4 0.501
escape gen 5 5 6 8 0.626
varargs gen 27 20 25 36 0.756
cartesian gen 7 10 6 8 0.879

raw benchmark files