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 14 0.000
loops gen 1 3 1 369 0.002
modules gen 1 1 1 241 0.003
fib_iter gen 5 7 7 958 0.005
fib_recursive gen 6 5 6 1,102 0.006
asdl_generated gen 7 8 9 518 0.013
scoped_resource gen 27 30 28 1,352 0.020
parse gen 21 23 23 952 0.022
containers gen 5 6 3 133 0.036
tuple_return_value gen 12 15 15 246 0.049
files gen 6 6 6 100 0.057
classes gen 3 2 2 35 0.075
length gen 33 32 34 245 0.133
cartesian gen 66 76 74 386 0.171
escape gen 96 101 94 424 0.227
cgi gen 256 256 257 732 0.350
varargs gen 13 14 12 31 0.409
control_flow gen 135 177 135 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.3 4.5 4.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
escape gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
length gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
fib_recursive 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.9 3.8 3.8 8.1 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.4 28.7 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
classes gen 0 1 1 7 0.000
control_flow gen 0 1 1 10 0.000
fib_recursive gen 0 1 0 6 0.000
modules gen 1 0 0 7 0.101
files gen 1 1 1 9 0.126
gc_stack_roots gen 1 0 0 7 0.195
escape gen 2 4 5 10 0.200
loops gen 2 0 1 7 0.242
fib_iter gen 2 0 0 8 0.253
asdl_generated gen 3 2 1 9 0.329
tuple_return_value gen 3 2 0 8 0.373
scoped_resource gen 3 2 2 7 0.423
containers gen 9 8 10 20 0.429
cgi gen 3 2 3 6 0.500
parse gen 5 4 2 8 0.612
length gen 6 4 5 8 0.763
varargs gen 26 25 27 24 1.058
cartesian gen 9 5 2 7 1.286

raw benchmark files