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 0 12 0.000
modules gen 1 0 0 235 0.003
loops gen 2 2 1 370 0.005
fib_recursive gen 6 6 4 1,060 0.006
fib_iter gen 7 7 6 960 0.007
asdl_generated gen 7 8 8 518 0.013
containers gen 2 8 4 132 0.015
scoped_resource gen 27 27 27 1,357 0.020
parse gen 22 23 20 945 0.023
classes gen 1 3 2 32 0.028
tuple_return_value gen 15 12 13 246 0.060
files gen 7 7 6 101 0.067
length gen 36 35 32 295 0.121
cartesian gen 66 71 66 429 0.154
escape gen 92 95 95 431 0.213
cgi gen 258 250 257 747 0.345
varargs gen 22 16 13 28 0.795
control_flow gen 143 179 135 145 0.988

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.5 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.7 0.44
fib_iter gen 3.4 3.7 3.4 7.6 0.45
loops gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.4 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
escape gen 3.5 3.5 3.5 7.5 0.47
control_flow gen 3.7 3.8 3.7 7.7 0.47
length gen 3.7 3.7 3.7 7.7 0.47
files gen 3.8 3.8 3.7 7.7 0.49
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.3 28.3 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
fib_iter gen 0 0 1 6 0.000
fib_recursive gen 0 0 2 7 0.000
files gen 0 0 1 5 0.000
tuple_return_value gen 0 5 2 5 0.000
modules gen 1 1 1 7 0.102
control_flow gen 1 0 1 7 0.143
classes gen 2 0 1 11 0.162
loops gen 1 2 2 5 0.168
gc_stack_roots gen 1 1 1 8 0.172
cgi gen 2 3 3 8 0.249
scoped_resource gen 3 4 3 10 0.296
asdl_generated gen 3 2 2 10 0.299
parse gen 4 4 5 11 0.358
length gen 3 2 6 7 0.426
containers gen 12 7 9 24 0.499
varargs gen 16 22 25 28 0.578
escape gen 6 11 3 9 0.672
cartesian gen 9 10 9 8 1.126

raw benchmark files