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
loops gen 1 3 2 361 0.002
modules gen 1 0 0 237 0.003
fib_recursive gen 5 4 5 1,131 0.005
fib_iter gen 7 6 5 963 0.007
asdl_generated gen 8 8 9 528 0.015
scoped_resource gen 26 29 27 1,374 0.019
parse gen 21 26 23 953 0.022
containers gen 5 7 7 128 0.037
tuple_return_value gen 11 15 13 243 0.045
files gen 5 6 6 99 0.051
classes gen 2 1 1 32 0.056
gc_stack_roots gen 1 1 1 11 0.126
length gen 35 33 34 242 0.143
cartesian gen 70 74 68 388 0.180
escape gen 93 102 94 419 0.223
cgi gen 259 247 258 729 0.355
varargs gen 17 16 15 29 0.591
control_flow gen 134 178 136 142 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.3 4.3 11.4 0.39
gc_stack_roots gen 3.3 3.5 3.4 7.6 0.43
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.7 3.4 7.6 0.47
parse gen 3.8 3.7 3.9 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.8 3.8 3.5 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 0.59
varargs gen 5.5 5.4 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 2 9 0.000
gc_stack_roots gen 0 0 1 9 0.000
classes gen 1 2 1 10 0.089
modules gen 1 1 1 6 0.118
fib_recursive gen 1 2 1 8 0.129
loops gen 2 0 1 8 0.221
control_flow gen 2 1 1 9 0.223
asdl_generated gen 2 2 1 8 0.250
files gen 2 1 1 8 0.251
containers gen 9 7 7 24 0.356
cgi gen 3 7 3 8 0.376
tuple_return_value gen 4 2 2 9 0.444
scoped_resource gen 4 3 3 9 0.451
parse gen 5 1 2 9 0.549
cartesian gen 5 7 7 9 0.555
length gen 4 3 4 7 0.583
escape gen 6 4 5 10 0.597
varargs gen 21 23 23 27 0.784

raw benchmark files