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 0 0 14 0.000
modules gen 0 1 1 231 0.000
fib_recursive gen 6 5 6 1,096 0.006
loops gen 2 2 1 364 0.007
fib_iter gen 7 5 7 954 0.007
asdl_generated gen 9 10 8 500 0.018
scoped_resource gen 27 28 28 1,348 0.020
parse gen 23 27 24 945 0.024
containers gen 7 7 5 123 0.058
tuple_return_value gen 15 12 13 247 0.059
files gen 6 6 6 97 0.060
classes gen 2 1 2 28 0.063
length gen 36 31 32 244 0.147
cartesian gen 70 74 70 400 0.175
escape gen 97 101 91 431 0.225
cgi gen 256 251 257 727 0.352
varargs gen 18 18 17 30 0.603
control_flow gen 133 179 133 148 0.902

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.3 11.6 0.38
gc_stack_roots gen 3.4 3.4 3.4 7.9 0.43
asdl_generated gen 3.4 3.3 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.4 3.4 3.5 7.6 0.45
length gen 3.5 3.7 3.5 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.7 28.6 28.3 48.2 0.59
varargs gen 5.5 5.2 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 2 0 6 0.000
fib_recursive gen 0 1 0 7 0.000
loops gen 0 1 2 9 0.000
classes gen 1 2 1 13 0.068
tuple_return_value gen 1 5 2 9 0.115
files gen 1 1 1 8 0.120
asdl_generated gen 1 0 2 7 0.142
modules gen 1 0 0 8 0.172
gc_stack_roots gen 1 1 1 6 0.227
containers gen 6 7 9 27 0.228
parse gen 3 0 1 11 0.268
scoped_resource gen 3 4 3 9 0.332
cgi gen 3 1 0 9 0.333
control_flow gen 2 1 3 6 0.334
escape gen 2 4 6 5 0.400
length gen 3 5 6 6 0.497
varargs gen 20 21 22 26 0.773
cartesian gen 5 7 5 5 1.002

raw benchmark files