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
fib_recursive gen 5 4 4 1,090 0.004
modules gen 1 1 1 230 0.006
loops gen 3 3 2 345 0.007
fib_iter gen 7 6 6 957 0.008
asdl_generated gen 8 10 5 512 0.016
scoped_resource gen 28 25 26 1,356 0.021
parse gen 22 25 22 968 0.022
containers gen 5 5 7 123 0.040
files gen 5 5 6 104 0.047
tuple_return_value gen 14 14 13 245 0.058
classes gen 2 2 2 31 0.060
length gen 35 34 36 245 0.144
cartesian gen 69 72 70 383 0.180
escape gen 94 98 98 436 0.215
cgi gen 259 254 253 731 0.354
varargs gen 14 18 19 33 0.432
control_flow gen 133 177 135 145 0.916

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.5 11.5 0.38
asdl_generated gen 3.3 3.4 3.3 7.7 0.42
modules gen 3.4 3.7 3.7 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
parse gen 3.7 3.8 3.8 8.1 0.45
cartesian gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.4 3.5 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.4 3.4 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.6 28.3 48.2 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
cgi gen 0 1 2 9 0.000
fib_iter gen 0 1 1 10 0.000
loops gen 0 0 1 8 0.000
modules gen 0 1 0 9 0.000
classes gen 1 1 1 12 0.078
tuple_return_value gen 1 3 2 9 0.105
gc_stack_roots gen 1 1 1 7 0.209
asdl_generated gen 2 0 5 9 0.225
files gen 2 2 1 8 0.244
scoped_resource gen 2 7 5 8 0.253
fib_recursive gen 2 2 3 7 0.259
containers gen 9 10 6 33 0.266
control_flow gen 3 3 1 8 0.374
parse gen 4 2 4 10 0.394
cartesian gen 5 8 7 12 0.416
escape gen 6 6 2 11 0.545
length gen 4 3 2 6 0.658
varargs gen 24 21 20 25 0.978

raw benchmark files