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 4 6 1,223 0.005
modules gen 1 1 1 235 0.006
fib_iter gen 7 6 6 991 0.007
loops gen 3 3 1 357 0.007
asdl_generated gen 10 7 7 518 0.019
scoped_resource gen 27 29 26 1,364 0.020
parse gen 22 23 22 995 0.023
containers gen 5 5 4 128 0.039
classes gen 1 1 1 35 0.039
tuple_return_value gen 12 15 15 244 0.049
files gen 7 6 6 101 0.069
gc_stack_roots gen 1 1 1 12 0.120
length gen 34 33 33 252 0.135
cartesian gen 68 74 72 395 0.173
escape gen 93 102 93 423 0.219
cgi gen 257 249 258 748 0.344
varargs gen 15 19 15 34 0.434
control_flow gen 134 187 133 148 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.5 4.5 11.5 0.38
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.4 3.5 7.7 0.46
parse gen 3.8 3.8 3.8 8.3 0.46
fib_iter gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.4 7.6 0.48
length gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.7 28.5 48.2 0.59
varargs gen 5.5 5.5 5.6 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 3 3 5 0.000
fib_iter gen 0 1 1 8 0.000
fib_recursive gen 0 2 0 10 0.000
files gen 0 1 1 6 0.000
gc_stack_roots gen 0 1 0 9 0.000
loops gen 0 0 2 9 0.000
modules gen 0 0 0 8 0.000
control_flow gen 1 2 2 7 0.143
classes gen 1 2 2 9 0.152
tuple_return_value gen 3 2 0 13 0.232
parse gen 3 4 4 9 0.326
containers gen 9 10 10 24 0.374
scoped_resource gen 3 2 4 8 0.381
cgi gen 4 3 3 8 0.501
escape gen 6 3 5 11 0.543
length gen 5 4 5 8 0.625
cartesian gen 7 6 3 9 0.782
varargs gen 24 20 23 23 1.027

raw benchmark files