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 6 5 6 1,091 0.006
modules gen 1 1 0 238 0.006
fib_iter gen 6 6 7 963 0.006
loops gen 3 3 3 356 0.007
asdl_generated gen 10 10 9 519 0.019
scoped_resource gen 28 27 24 1,415 0.020
parse gen 20 24 24 973 0.020
classes gen 1 2 2 33 0.028
containers gen 7 8 6 134 0.052
tuple_return_value gen 13 16 14 246 0.053
files gen 7 6 6 103 0.066
gc_stack_roots gen 1 1 1 17 0.084
length gen 35 33 37 245 0.142
cartesian gen 65 72 70 403 0.162
escape gen 93 100 93 433 0.215
cgi gen 260 250 258 737 0.353
varargs gen 14 18 24 22 0.649
control_flow gen 135 178 136 154 0.876

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.3 3.3 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
fib_iter gen 3.4 3.7 3.7 7.6 0.45
cgi gen 3.5 3.4 3.4 7.7 0.46
escape gen 3.5 3.5 3.4 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
parse gen 3.7 3.9 3.9 8.0 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
length gen 3.7 3.5 3.4 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files 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.3 28.6 28.4 48.2 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 0 1 8 0.000
control_flow gen 0 1 0 9 0.000
fib_recursive gen 0 2 1 8 0.000
files gen 0 1 1 5 0.000
gc_stack_roots gen 0 0 0 5 0.000
loops gen 0 0 0 5 0.000
modules gen 0 0 1 9 0.000
fib_iter gen 1 1 0 9 0.113
classes gen 2 1 1 11 0.169
scoped_resource gen 2 5 6 11 0.184
tuple_return_value gen 2 1 1 8 0.252
containers gen 7 6 8 24 0.292
length gen 4 4 2 7 0.569
cgi gen 4 5 3 6 0.667
escape gen 4 5 6 6 0.668
varargs gen 24 20 14 34 0.719
parse gen 6 3 1 6 0.981
cartesian gen 10 8 5 10 0.991

raw benchmark files