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
modules gen 0 0 1 235 0.000
fib_recursive gen 4 4 6 1,096 0.004
fib_iter gen 5 6 7 971 0.006
loops gen 3 2 2 363 0.007
asdl_generated gen 9 9 9 521 0.017
scoped_resource gen 28 29 23 1,357 0.021
parse gen 23 24 23 957 0.024
containers gen 4 7 4 131 0.030
gc_stack_roots gen 1 0 1 14 0.052
classes gen 2 1 1 32 0.055
tuple_return_value gen 14 15 12 249 0.056
files gen 6 6 6 101 0.058
length gen 37 30 33 245 0.152
cartesian gen 70 72 70 393 0.179
escape gen 94 103 91 435 0.217
cgi gen 256 249 256 744 0.344
varargs gen 16 18 14 27 0.600
control_flow gen 135 179 135 149 0.911

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.3 11.5 0.38
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
escape gen 3.4 3.7 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
parse gen 3.7 3.7 3.7 8.1 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
cgi gen 3.5 3.4 3.4 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.5 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.6 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 2 1 7 0.000
classes gen 1 2 2 11 0.080
gc_stack_roots gen 1 1 0 7 0.105
asdl_generated gen 1 1 1 7 0.143
fib_recursive gen 2 2 0 12 0.148
files gen 1 1 1 5 0.194
tuple_return_value gen 1 2 3 5 0.199
length gen 1 7 6 5 0.202
modules gen 1 1 0 7 0.203
fib_iter gen 2 1 0 8 0.223
scoped_resource gen 2 3 7 7 0.279
containers gen 10 7 10 28 0.346
parse gen 2 3 3 5 0.402
control_flow gen 2 2 2 4 0.499
cgi gen 4 4 3 7 0.572
cartesian gen 5 8 5 8 0.619
escape gen 5 2 7 8 0.628
varargs gen 22 20 24 29 0.768

raw benchmark files