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 2 2 3 358 0.005
fib_recursive gen 6 5 5 1,090 0.006
modules gen 1 1 1 235 0.006
fib_iter gen 7 6 6 995 0.007
asdl_generated gen 6 9 9 542 0.011
scoped_resource gen 28 28 28 1,368 0.021
parse gen 23 24 22 951 0.024
containers gen 5 5 4 122 0.040
files gen 5 5 6 100 0.048
tuple_return_value gen 13 17 13 249 0.052
classes gen 2 2 1 32 0.056
gc_stack_roots gen 1 0 0 15 0.089
length gen 31 35 36 245 0.126
cartesian gen 65 75 68 394 0.166
escape gen 93 101 96 434 0.215
cgi gen 255 245 254 731 0.349
varargs gen 20 17 16 27 0.753
control_flow gen 134 177 136 145 0.921

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.5 4.2 4.3 11.4 0.39
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.4 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
fib_iter gen 3.7 3.7 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.4 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.5 3.8 7.6 0.50
containers gen 28.3 28.5 28.3 48.2 0.59
varargs gen 5.4 5.5 5.4 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 1 5 0.000
fib_recursive gen 0 1 1 11 0.000
gc_stack_roots gen 0 1 1 6 0.000
modules gen 0 0 0 7 0.000
classes gen 1 1 2 11 0.081
loops gen 1 2 0 7 0.122
control_flow gen 1 2 0 8 0.126
scoped_resource gen 2 3 2 11 0.184
parse gen 3 3 4 11 0.270
containers gen 9 10 9 31 0.286
tuple_return_value gen 2 0 2 6 0.333
cgi gen 3 5 3 8 0.375
files gen 2 2 1 5 0.383
asdl_generated gen 4 1 1 8 0.497
escape gen 5 4 3 9 0.558
varargs gen 18 22 23 30 0.610
length gen 8 2 2 8 0.995
cartesian gen 10 6 7 5 1.980

raw benchmark files