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 15 0.000
loops gen 1 2 3 382 0.002
fib_recursive gen 7 7 7 1,144 0.006
modules gen 2 1 2 247 0.006
fib_iter gen 8 7 7 1,101 0.007
asdl_generated gen 11 12 13 544 0.019
scoped_resource gen 31 32 29 1,414 0.022
parse gen 26 26 27 982 0.027
classes gen 2 1 2 38 0.044
containers gen 7 4 7 127 0.056
tuple_return_value gen 15 15 15 262 0.059
files gen 7 8 7 101 0.068
length gen 37 36 34 249 0.147
cartesian gen 76 80 70 464 0.163
escape gen 101 106 103 437 0.232
cgi gen 272 263 277 771 0.353
varargs gen 22 18 19 29 0.759
control_flow gen 142 190 147 155 0.918

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.5 3.4 7.7 0.42
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.4 3.4 7.6 0.45
length gen 3.4 3.5 3.7 7.6 0.45
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
loops gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.9 3.7 8.0 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
fib_iter gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
files gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.5 28.5 28.7 48.1 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
control_flow gen 0 0 1 6 0.000
modules gen 0 1 0 8 0.000
fib_recursive gen 1 0 0 11 0.087
files gen 1 0 1 9 0.110
fib_iter gen 1 2 2 9 0.113
parse gen 2 3 1 10 0.203
loops gen 2 2 0 9 0.204
classes gen 2 2 2 7 0.237
asdl_generated gen 2 0 0 8 0.240
containers gen 8 12 9 32 0.252
tuple_return_value gen 2 4 2 8 0.257
gc_stack_roots gen 2 1 2 6 0.258
cartesian gen 4 6 10 10 0.399
scoped_resource gen 3 1 3 7 0.437
length gen 5 3 8 10 0.497
cgi gen 5 4 1 8 0.624
varargs gen 20 24 23 28 0.715
escape gen 5 7 4 6 0.835

raw benchmark files