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 0 1 232 0.000
fib_recursive gen 5 5 4 1,080 0.005
loops gen 3 2 2 366 0.007
fib_iter gen 7 7 7 967 0.007
asdl_generated gen 6 9 8 517 0.011
scoped_resource gen 27 29 24 1,356 0.020
parse gen 22 25 23 938 0.024
classes gen 1 1 1 36 0.025
containers gen 5 6 3 135 0.036
tuple_return_value gen 15 15 15 253 0.060
files gen 7 6 6 97 0.070
gc_stack_roots gen 1 1 1 12 0.119
cartesian gen 70 73 67 390 0.180
escape gen 96 101 92 433 0.221
length gen 66 34 37 239 0.278
cgi gen 269 247 257 739 0.364
control_flow gen 136 182 135 148 0.918
varargs gen 24 18 13 25 0.939

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
cartesian gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cgi gen 3.4 3.4 3.5 7.6 0.45
escape gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
fib_iter gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.4 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.0 0.47
control_flow gen 3.7 3.7 3.7 7.5 0.49
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.3 28.4 28.4 48.2 0.59
varargs gen 5.5 5.5 5.4 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 8 0.000
fib_iter gen 0 0 0 8 0.000
files gen 0 1 1 11 0.000
gc_stack_roots gen 0 0 1 9 0.000
loops gen 0 1 1 9 0.000
tuple_return_value gen 0 2 0 10 0.000
modules gen 1 1 0 10 0.141
fib_recursive gen 1 1 2 7 0.149
escape gen 2 4 7 10 0.200
parse gen 3 2 2 12 0.254
classes gen 2 2 1 7 0.261
scoped_resource gen 4 3 7 11 0.357
asdl_generated gen 4 1 3 10 0.394
length gen 3 3 2 7 0.432
cgi gen 4 5 4 9 0.445
varargs gen 15 21 25 31 0.473
containers gen 9 8 11 15 0.577
cartesian gen 5 6 8 7 0.715

raw benchmark files