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 15 0.000
fib_recursive gen 6 4 5 1,089 0.006
modules gen 1 1 1 237 0.006
loops gen 3 3 3 361 0.007
fib_iter gen 7 6 6 963 0.007
asdl_generated gen 7 9 9 507 0.014
scoped_resource gen 28 28 26 1,367 0.021
parse gen 23 23 22 959 0.024
containers gen 4 7 5 126 0.034
tuple_return_value gen 13 13 13 254 0.052
classes gen 2 1 1 32 0.056
files gen 6 6 7 102 0.058
length gen 35 32 35 259 0.134
cartesian gen 63 71 67 401 0.157
escape gen 93 102 91 433 0.216
cgi gen 257 248 259 740 0.347
varargs gen 18 19 21 28 0.645
control_flow gen 134 187 134 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.3 3.3 3.3 7.7 0.42
cgi gen 3.4 3.7 3.4 7.7 0.44
escape gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.3 7.6 0.45
scoped_resource gen 3.4 3.4 3.5 7.6 0.45
parse gen 3.7 3.8 3.9 8.1 0.45
cartesian gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
length gen 3.7 3.5 3.7 7.7 0.47
fib_iter gen 3.7 3.4 3.5 7.6 0.48
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.7 28.6 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 1 1 5 0.000
fib_recursive gen 0 2 1 9 0.000
loops gen 0 0 0 10 0.000
modules gen 0 0 0 3 0.000
classes gen 1 1 2 12 0.075
files gen 1 1 0 7 0.141
scoped_resource gen 2 4 4 11 0.185
control_flow gen 1 2 1 5 0.200
parse gen 3 4 4 12 0.247
gc_stack_roots gen 1 0 0 5 0.273
containers gen 10 7 9 28 0.344
cgi gen 4 4 2 11 0.363
asdl_generated gen 3 1 1 8 0.378
tuple_return_value gen 2 3 2 5 0.407
length gen 4 5 3 6 0.662
varargs gen 20 20 17 29 0.692
escape gen 5 3 7 4 1.243
cartesian gen 10 9 8 3 3.343

raw benchmark files