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 0 1 10 0.000
modules gen 0 1 0 231 0.000
fib_recursive gen 5 5 5 1,107 0.005
fib_iter gen 6 6 6 968 0.006
loops gen 3 3 1 351 0.007
asdl_generated gen 7 7 8 508 0.014
scoped_resource gen 27 30 28 1,395 0.019
parse gen 22 26 20 954 0.024
files gen 4 6 6 99 0.039
containers gen 5 9 5 126 0.039
tuple_return_value gen 13 15 14 248 0.052
classes gen 3 2 3 31 0.086
length gen 37 29 36 240 0.153
cartesian gen 67 72 71 395 0.169
escape gen 91 99 92 431 0.211
cgi gen 260 248 258 745 0.349
varargs gen 18 21 15 28 0.633
control_flow gen 136 178 134 150 0.909

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.3 4.2 11.5 0.38
gc_stack_roots gen 3.3 3.3 3.3 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.7 0.44
cgi gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.8 3.7 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.7 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.4 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 0 12 0.000
loops gen 0 0 2 11 0.000
fib_iter gen 1 1 1 11 0.092
fib_recursive gen 1 1 1 9 0.117
gc_stack_roots gen 1 1 0 10 0.137
modules gen 1 0 1 9 0.155
length gen 2 7 3 12 0.165
control_flow gen 1 1 1 5 0.200
tuple_return_value gen 2 1 1 6 0.334
containers gen 9 5 9 26 0.338
asdl_generated gen 3 3 2 8 0.372
files gen 3 1 1 7 0.409
parse gen 3 1 6 7 0.418
scoped_resource gen 3 2 2 6 0.493
cgi gen 4 4 3 6 0.667
varargs gen 21 18 23 28 0.738
escape gen 7 6 5 9 0.779
cartesian gen 7 8 5 8 0.872

raw benchmark files