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 1 11 0.000
modules gen 1 1 0 236 0.003
loops gen 1 1 3 358 0.004
fib_recursive gen 6 6 4 1,120 0.006
fib_iter gen 7 5 6 968 0.007
asdl_generated gen 9 10 9 516 0.017
scoped_resource gen 26 28 27 1,362 0.019
parse gen 23 22 20 958 0.024
tuple_return_value gen 12 15 14 253 0.048
files gen 5 6 6 97 0.050
classes gen 2 2 1 34 0.052
containers gen 7 5 4 128 0.055
length gen 36 32 38 243 0.147
cartesian gen 67 71 74 445 0.150
escape gen 89 100 89 425 0.210
cgi gen 255 251 256 753 0.339
varargs gen 13 16 19 21 0.618
control_flow gen 134 186 134 142 0.938

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.5 4.3 11.6 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
cgi gen 3.4 3.4 3.5 7.7 0.44
escape gen 3.4 3.4 3.5 7.6 0.45
tuple_return_value gen 3.5 3.8 3.7 7.7 0.46
asdl_generated gen 3.5 3.3 3.3 7.6 0.47
cartesian gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.9 3.9 8.1 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.7 28.3 28.5 48.1 0.60
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 2 1 6 0.000
fib_recursive gen 0 0 2 7 0.000
modules gen 1 0 1 11 0.065
classes gen 1 1 2 9 0.099
asdl_generated gen 1 0 1 11 0.100
gc_stack_roots gen 1 0 0 10 0.141
files gen 2 1 1 11 0.176
loops gen 1 2 0 6 0.211
cgi gen 3 1 4 11 0.272
containers gen 7 9 10 25 0.281
control_flow gen 3 1 1 10 0.298
parse gen 3 5 6 9 0.327
scoped_resource gen 4 3 3 11 0.360
length gen 3 5 1 8 0.372
tuple_return_value gen 3 2 1 6 0.502
varargs gen 26 23 20 35 0.741
escape gen 9 4 9 11 0.812
cartesian gen 8 9 2 7 1.141

raw benchmark files