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
gc_stack_roots gen 0 1 1 13 0.000
fib_recursive gen 6 6 6 1,077 0.006
modules gen 1 0 1 231 0.006
loops gen 3 2 1 354 0.007
fib_iter gen 7 5 7 966 0.007
scoped_resource gen 25 27 27 1,375 0.018
asdl_generated gen 10 10 9 509 0.020
parse gen 22 23 22 947 0.024
classes gen 1 2 1 30 0.029
containers gen 5 6 5 131 0.037
tuple_return_value gen 13 14 13 247 0.053
files gen 6 5 3 97 0.059
length gen 38 35 35 244 0.157
cartesian gen 73 77 67 393 0.185
escape gen 91 102 94 436 0.209
cgi gen 255 250 254 735 0.347
varargs gen 16 16 16 25 0.625
control_flow gen 134 180 134 151 0.889

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.5 0.39
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
scoped_resource gen 3.5 3.5 3.4 7.7 0.46
gc_stack_roots gen 3.5 3.4 3.4 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
fib_iter gen 3.7 3.4 3.5 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
parse gen 3.9 3.7 3.7 8.1 0.48
files gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.4 28.7 48.2 0.59
varargs gen 5.5 5.5 5.4 7.6 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 1 9 0.000
fib_iter gen 0 2 0 10 0.000
fib_recursive gen 0 0 0 12 0.000
loops gen 0 2 1 10 0.000
modules gen 0 1 0 12 0.000
files gen 1 2 4 10 0.096
classes gen 2 1 2 12 0.146
gc_stack_roots gen 1 0 0 7 0.198
tuple_return_value gen 2 2 2 8 0.250
parse gen 3 4 4 9 0.324
length gen 3 2 4 9 0.335
containers gen 9 8 8 22 0.402
control_flow gen 2 0 1 4 0.497
cartesian gen 3 2 8 5 0.606
cgi gen 5 1 5 8 0.625
scoped_resource gen 5 4 3 7 0.711
varargs gen 23 23 22 31 0.725
escape gen 7 3 4 8 0.877

raw benchmark files