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
modules gen 0 0 1 234 0.000
loops gen 2 3 1 369 0.005
fib_recursive gen 5 6 5 1,100 0.005
fib_iter gen 6 5 6 975 0.006
asdl_generated gen 10 10 8 521 0.019
scoped_resource gen 27 28 29 1,359 0.020
parse gen 21 25 23 960 0.021
containers gen 6 5 8 130 0.045
tuple_return_value gen 12 16 14 256 0.047
files gen 6 5 5 103 0.056
classes gen 3 1 2 30 0.088
gc_stack_roots gen 1 0 1 14 0.097
length gen 33 30 33 240 0.138
cartesian gen 75 73 71 396 0.189
escape gen 94 103 90 440 0.213
cgi gen 255 248 262 758 0.336
varargs gen 18 16 15 31 0.587
control_flow gen 134 178 136 148 0.910

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 0 2 9 0.000
cartesian gen 0 8 4 8 0.000
classes gen 0 1 1 12 0.000
gc_stack_roots gen 0 1 1 7 0.000
fib_recursive gen 1 0 1 9 0.099
control_flow gen 1 1 0 8 0.126
modules gen 1 1 0 9 0.157
files gen 1 2 2 6 0.159
loops gen 1 0 2 5 0.169
fib_iter gen 1 2 1 5 0.201
scoped_resource gen 3 3 1 11 0.274
containers gen 8 9 6 22 0.356
length gen 5 6 6 11 0.455
parse gen 5 2 2 10 0.489
tuple_return_value gen 3 1 1 5 0.598
varargs gen 20 23 23 26 0.778
cgi gen 4 5 1 5 0.799
escape gen 5 3 9 3 1.661

raw benchmark files