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
loops gen 1 2 2 358 0.002
modules gen 1 1 1 236 0.003
fib_recursive gen 6 5 5 1,090 0.006
fib_iter gen 6 6 4 953 0.006
asdl_generated gen 9 8 8 511 0.017
scoped_resource gen 27 28 24 1,373 0.019
parse gen 24 24 23 950 0.026
containers gen 4 7 7 122 0.032
tuple_return_value gen 11 13 12 245 0.046
classes gen 2 2 2 35 0.051
files gen 6 5 7 102 0.057
length gen 34 35 36 251 0.136
cartesian gen 71 76 68 440 0.162
escape gen 93 104 92 436 0.213
cgi gen 255 250 260 724 0.353
varargs gen 14 18 16 29 0.481
control_flow gen 137 179 134 145 0.942

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 9 0.000
fib_recursive gen 0 1 1 12 0.000
modules gen 1 1 0 11 0.063
asdl_generated gen 1 2 2 12 0.083
classes gen 1 1 1 8 0.112
fib_iter gen 1 1 3 7 0.144
parse gen 1 3 2 7 0.146
gc_stack_roots gen 1 0 1 9 0.152
files gen 1 2 1 5 0.192
loops gen 2 1 1 7 0.239
scoped_resource gen 3 3 6 9 0.340
containers gen 10 7 6 28 0.344
cgi gen 4 2 2 9 0.445
tuple_return_value gen 4 4 3 8 0.507
cartesian gen 4 5 7 7 0.574
varargs gen 24 21 23 26 0.920
length gen 5 2 3 5 1.001
escape gen 6 5 8 6 1.008

raw benchmark files