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 1 1 12 0.000
fib_recursive gen 6 5 6 1,079 0.006
modules gen 1 1 0 234 0.006
fib_iter gen 6 5 6 970 0.006
loops gen 3 1 1 369 0.007
asdl_generated gen 8 8 10 514 0.015
scoped_resource gen 26 29 26 1,383 0.019
parse gen 22 26 25 958 0.023
classes gen 1 1 1 36 0.037
tuple_return_value gen 14 14 13 250 0.055
containers gen 8 7 7 144 0.056
files gen 6 6 6 100 0.058
length gen 33 32 34 242 0.135
cartesian gen 70 72 68 415 0.169
escape gen 95 101 90 428 0.223
cgi gen 257 248 260 755 0.341
varargs gen 16 13 16 29 0.556
control_flow gen 132 179 134 145 0.905

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 1 7 0.000
loops gen 0 2 2 5 0.000
modules gen 0 0 1 9 0.000
tuple_return_value gen 1 3 2 7 0.140
fib_iter gen 1 2 1 7 0.144
gc_stack_roots gen 1 1 0 8 0.171
asdl_generated gen 2 2 0 11 0.180
classes gen 1 1 1 7 0.192
files gen 1 1 1 5 0.193
cgi gen 3 3 2 9 0.332
containers gen 6 7 7 17 0.353
parse gen 3 1 1 8 0.380
control_flow gen 4 2 1 10 0.398
escape gen 3 4 8 7 0.430
cartesian gen 5 7 8 9 0.556
scoped_resource gen 4 2 5 7 0.567
varargs gen 22 26 23 27 0.821
length gen 6 5 5 7 0.845

raw benchmark files