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 0 11 0.000
modules gen 0 1 1 230 0.000
loops gen 2 3 2 357 0.005
fib_recursive gen 5 5 5 1,077 0.005
fib_iter gen 7 7 6 950 0.007
scoped_resource gen 24 29 25 1,370 0.017
asdl_generated gen 9 7 7 511 0.018
parse gen 23 28 24 958 0.025
classes gen 1 1 3 28 0.031
tuple_return_value gen 13 15 13 247 0.053
containers gen 7 6 6 126 0.055
files gen 7 6 5 97 0.071
length gen 35 31 32 246 0.144
cartesian gen 69 70 69 410 0.169
escape gen 92 100 97 431 0.213
cgi gen 258 249 255 732 0.353
varargs gen 15 16 18 27 0.560
control_flow gen 133 178 133 142 0.941

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.3 4.5 11.5 0.39
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
scoped_resource gen 3.4 3.4 3.5 7.7 0.44
escape gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.4 3.3 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.5 0.47
tuple_return_value gen 3.7 3.7 3.8 7.7 0.47
parse gen 3.8 3.9 3.8 8.0 0.48
fib_iter gen 3.7 3.7 3.5 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.3 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 1 5 0.000
files gen 0 1 2 8 0.000
loops gen 1 0 1 10 0.084
classes gen 2 2 0 14 0.126
modules gen 1 1 1 11 0.129
fib_recursive gen 1 1 1 8 0.130
gc_stack_roots gen 1 1 1 10 0.137
asdl_generated gen 1 3 3 6 0.166
cgi gen 2 4 2 10 0.200
control_flow gen 2 0 2 8 0.249
tuple_return_value gen 2 2 2 8 0.250
containers gen 7 9 9 24 0.289
length gen 3 5 6 8 0.378
parse gen 2 3 1 5 0.391
scoped_resource gen 6 2 5 9 0.666
varargs gen 23 22 21 29 0.799
escape gen 7 6 1 8 0.874
cartesian gen 6 10 6 3 2.013

raw benchmark files