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
fib_recursive gen 5 6 6 1,112 0.005
loops gen 2 3 3 358 0.005
modules gen 2 1 0 235 0.007
fib_iter gen 7 7 5 963 0.007
asdl_generated gen 8 9 10 513 0.016
scoped_resource gen 28 30 27 1,396 0.020
parse gen 24 26 25 943 0.025
containers gen 5 9 4 128 0.041
tuple_return_value gen 12 14 12 250 0.048
files gen 6 5 7 103 0.061
classes gen 2 2 1 29 0.068
gc_stack_roots gen 1 0 0 14 0.102
length gen 35 32 38 242 0.146
cartesian gen 69 78 74 395 0.174
escape gen 92 99 93 426 0.216
cgi gen 243 251 243 739 0.329
varargs gen 11 15 14 27 0.414
control_flow gen 136 179 144 147 0.926

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 2 6 0.000
gc_stack_roots gen 0 1 1 9 0.000
modules gen 0 0 1 11 0.000
classes gen 1 1 1 15 0.065
loops gen 1 0 0 12 0.071
files gen 1 3 1 11 0.095
control_flow gen 1 0 2 10 0.100
parse gen 2 1 1 11 0.181
cgi gen 3 5 4 10 0.299
tuple_return_value gen 3 3 3 9 0.334
asdl_generated gen 2 5 0 6 0.336
fib_recursive gen 2 0 1 6 0.347
containers gen 9 6 11 26 0.359
length gen 4 4 1 9 0.435
scoped_resource gen 3 3 4 7 0.439
escape gen 7 6 4 14 0.499
cartesian gen 8 2 1 12 0.666
varargs gen 31 24 25 31 1.016

raw benchmark files