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,101 0.005
fib_iter gen 5 7 6 965 0.006
modules gen 1 0 1 233 0.006
loops gen 3 3 3 363 0.007
asdl_generated gen 8 7 8 517 0.016
scoped_resource gen 28 26 26 1,369 0.021
parse gen 23 26 24 950 0.025
classes gen 1 1 1 34 0.026
containers gen 7 9 7 126 0.055
tuple_return_value gen 14 15 15 248 0.055
files gen 7 5 6 102 0.070
gc_stack_roots gen 1 1 0 14 0.098
length gen 31 31 35 239 0.129
cartesian gen 66 75 71 398 0.165
escape gen 95 100 96 431 0.220
cgi gen 259 248 257 750 0.345
varargs gen 18 18 16 27 0.666
control_flow gen 136 176 136 145 0.937

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.2 4.3 11.5 0.39
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
cartesian gen 3.4 3.4 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
loops gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.4 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.48
fib_iter gen 3.5 3.5 3.7 7.3 0.48
files gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.3 48.4 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
control_flow gen 0 2 0 10 0.000
files gen 0 2 1 6 0.000
gc_stack_roots gen 0 0 1 6 0.000
loops gen 0 0 0 8 0.000
modules gen 0 1 0 8 0.000
fib_recursive gen 1 1 3 10 0.091
parse gen 2 1 2 11 0.186
classes gen 2 1 2 9 0.198
cgi gen 2 5 4 9 0.223
containers gen 7 6 7 26 0.266
asdl_generated gen 2 3 2 7 0.288
scoped_resource gen 3 6 5 10 0.305
tuple_return_value gen 2 2 0 6 0.327
escape gen 3 3 4 7 0.428
fib_iter gen 2 0 1 4 0.445
varargs gen 21 21 22 31 0.677
length gen 8 6 4 7 1.134
cartesian gen 9 5 4 8 1.138

raw benchmark files