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
fib_recursive gen 5 4 5 1,093 0.005
modules gen 1 1 0 236 0.006
loops gen 3 2 3 361 0.007
fib_iter gen 7 7 6 970 0.007
asdl_generated gen 10 10 6 513 0.020
scoped_resource gen 28 27 27 1,373 0.021
parse gen 24 24 23 941 0.025
files gen 4 7 5 98 0.042
classes gen 1 2 1 32 0.042
tuple_return_value gen 12 16 14 255 0.048
containers gen 6 5 4 124 0.049
gc_stack_roots gen 1 1 1 13 0.059
length gen 38 32 35 245 0.153
cartesian gen 69 73 71 394 0.175
escape gen 86 101 95 431 0.199
cgi gen 258 253 259 737 0.350
varargs gen 12 22 25 33 0.356
control_flow gen 134 178 136 152 0.883

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
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
cgi gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
parse gen 3.7 3.8 3.7 8.0 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
loops gen 3.7 3.7 3.4 7.7 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.7 28.5 48.2 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
asdl_generated gen 0 0 4 4 0.000
fib_iter gen 0 0 1 7 0.000
loops gen 0 2 0 7 0.000
modules gen 0 0 1 7 0.000
gc_stack_roots gen 1 1 0 7 0.109
classes gen 1 1 1 12 0.113
fib_recursive gen 1 2 1 9 0.116
control_flow gen 1 1 0 5 0.200
parse gen 2 3 3 8 0.245
scoped_resource gen 2 4 3 8 0.252
containers gen 8 9 10 27 0.299
files gen 3 0 2 10 0.308
tuple_return_value gen 3 1 1 7 0.438
length gen 4 5 4 8 0.493
cgi gen 3 2 1 5 0.600
cartesian gen 8 8 4 7 1.142
varargs gen 27 17 13 23 1.148
escape gen 10 5 3 6 1.661

raw benchmark files