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 1 3 1 364 0.002
fib_recursive gen 4 5 6 1,112 0.004
modules gen 1 1 1 239 0.006
fib_iter gen 7 6 7 963 0.007
asdl_generated gen 7 9 7 517 0.013
scoped_resource gen 25 25 24 1,371 0.018
parse gen 23 24 26 948 0.024
containers gen 5 9 8 123 0.039
tuple_return_value gen 14 14 13 256 0.053
files gen 6 6 7 100 0.058
classes gen 3 2 1 36 0.074
gc_stack_roots gen 1 1 1 12 0.118
length gen 36 31 36 253 0.144
cartesian gen 68 72 69 464 0.146
escape gen 95 99 96 429 0.220
cgi gen 252 250 260 729 0.346
varargs gen 16 21 20 30 0.538
control_flow gen 137 180 135 145 0.949

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
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
length gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
scoped_resource gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.47
escape gen 3.5 3.5 3.4 7.3 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.4 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
classes gen 0 1 2 7 0.000
control_flow gen 0 2 2 9 0.000
fib_iter gen 0 1 0 5 0.000
gc_stack_roots gen 0 1 0 9 0.000
modules gen 0 0 0 5 0.000
tuple_return_value gen 1 2 2 8 0.131
files gen 1 1 0 6 0.161
fib_recursive gen 2 1 0 10 0.178
loops gen 2 0 2 9 0.185
length gen 2 5 2 10 0.197
containers gen 9 5 5 28 0.310
parse gen 3 3 0 9 0.327
asdl_generated gen 3 1 3 7 0.423
scoped_resource gen 5 6 6 8 0.619
escape gen 4 6 3 5 0.806
cartesian gen 6 8 5 7 0.852
varargs gen 22 17 19 26 0.853
cgi gen 6 3 1 7 0.853

raw benchmark files