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
modules gen 0 1 1 238 0.000
loops gen 1 3 1 370 0.002
fib_recursive gen 4 5 6 1,098 0.003
fib_iter gen 6 6 6 1,019 0.006
asdl_generated gen 10 7 9 553 0.018
scoped_resource gen 26 30 27 1,378 0.019
parse gen 21 23 21 949 0.023
containers gen 4 7 5 124 0.032
files gen 4 6 6 99 0.045
tuple_return_value gen 12 15 12 250 0.048
classes gen 2 2 1 34 0.054
gc_stack_roots gen 1 1 0 13 0.106
length gen 33 33 33 243 0.136
cartesian gen 70 71 69 435 0.161
escape gen 92 99 95 438 0.209
cgi gen 259 249 256 732 0.354
varargs gen 21 15 15 28 0.735
control_flow gen 135 181 132 144 0.936

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.4 0.39
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.3 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
parse gen 3.7 3.8 3.8 8.1 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
fib_iter gen 3.7 3.5 3.4 7.6 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.7 0.49
tuple_return_value gen 3.8 3.5 3.7 7.7 0.49
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.4 28.4 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
asdl_generated gen 0 3 1 5 0.000
gc_stack_roots gen 0 0 1 8 0.000
classes gen 1 1 1 9 0.101
control_flow gen 1 3 3 9 0.111
fib_iter gen 1 1 1 7 0.147
modules gen 1 0 0 8 0.185
cgi gen 1 3 5 5 0.200
loops gen 2 0 1 8 0.213
files gen 2 1 1 10 0.222
containers gen 10 7 9 31 0.320
tuple_return_value gen 3 2 3 9 0.334
fib_recursive gen 3 1 0 8 0.336
cartesian gen 5 9 6 12 0.418
parse gen 4 4 5 8 0.509
varargs gen 18 24 24 30 0.588
scoped_resource gen 4 2 4 5 0.798
length gen 6 4 6 7 0.856
escape gen 7 6 2 6 1.161

raw benchmark files