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
loops gen 1 2 2 366 0.003
fib_recursive gen 4 5 5 1,110 0.004
modules gen 1 1 1 253 0.006
fib_iter gen 6 7 5 959 0.006
asdl_generated gen 8 8 8 521 0.015
scoped_resource gen 28 27 27 1,390 0.020
parse gen 22 25 21 940 0.024
containers gen 4 8 7 122 0.034
tuple_return_value gen 12 16 11 251 0.047
classes gen 2 2 2 36 0.050
files gen 7 7 3 99 0.068
gc_stack_roots gen 1 0 1 16 0.087
length gen 36 31 36 243 0.147
cartesian gen 68 72 70 398 0.172
escape gen 95 101 90 435 0.219
cgi gen 257 251 255 737 0.348
varargs gen 20 25 17 24 0.816
control_flow gen 135 179 136 147 0.919

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.3 4.5 11.4 0.38
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
parse gen 3.7 3.7 3.7 8.3 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.4 3.5 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
loops 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.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
files gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.6 28.5 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
files gen 0 0 4 9 0.000
gc_stack_roots gen 0 1 1 5 0.000
modules gen 0 0 0 7 0.000
fib_iter gen 1 0 2 10 0.101
classes gen 1 1 1 8 0.113
control_flow gen 1 0 0 8 0.125
asdl_generated gen 2 2 2 9 0.220
parse gen 3 2 5 13 0.225
scoped_resource gen 3 4 3 11 0.276
loops gen 1 1 1 4 0.313
tuple_return_value gen 3 1 4 9 0.330
length gen 3 5 3 9 0.331
containers gen 10 7 7 29 0.355
fib_recursive gen 2 1 2 5 0.358
cgi gen 3 1 6 7 0.428
escape gen 3 4 8 6 0.501
varargs gen 19 13 21 32 0.582
cartesian gen 6 8 6 5 1.208

raw benchmark files