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 5 4 1,102 0.005
modules gen 1 0 1 234 0.006
loops gen 2 3 1 363 0.007
fib_iter gen 7 6 6 977 0.007
asdl_generated gen 8 7 8 516 0.015
scoped_resource gen 28 27 29 1,390 0.020
parse gen 22 22 22 949 0.024
classes gen 1 2 1 29 0.031
containers gen 6 6 8 125 0.047
tuple_return_value gen 15 11 13 244 0.061
files gen 7 6 6 100 0.067
gc_stack_roots gen 1 1 1 13 0.101
length gen 37 35 32 253 0.148
cartesian gen 68 74 67 387 0.175
escape gen 98 102 94 436 0.224
cgi gen 255 252 254 736 0.347
varargs gen 13 15 16 27 0.487
control_flow gen 133 176 134 154 0.861

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.5 4.5 11.5 0.39
gc_stack_roots gen 3.3 3.4 3.5 7.6 0.43
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
loops gen 3.4 3.5 3.7 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.4 3.5 7.7 0.46
length gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 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_recursive gen 3.7 3.7 3.5 7.7 0.47
escape gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 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.3 48.1 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 1 7 0.000
files gen 0 1 1 8 0.000
gc_stack_roots gen 0 0 1 7 0.000
loops gen 0 0 1 6 0.000
modules gen 0 1 0 8 0.000
tuple_return_value gen 0 5 2 9 0.000
classes gen 2 1 1 14 0.127
escape gen 1 5 5 6 0.166
length gen 1 2 6 6 0.168
fib_recursive gen 1 1 3 5 0.205
asdl_generated gen 2 3 2 9 0.219
containers gen 8 9 5 25 0.313
scoped_resource gen 2 5 2 6 0.331
parse gen 3 5 4 8 0.382
control_flow gen 2 3 1 5 0.399
cartesian gen 7 6 8 10 0.699
varargs gen 25 23 22 31 0.817
cgi gen 5 1 6 6 0.834

raw benchmark files