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 11 0.000
modules gen 1 1 1 236 0.003
fib_recursive gen 5 6 5 1,096 0.005
fib_iter gen 6 6 6 1,089 0.006
loops gen 3 3 3 349 0.007
asdl_generated gen 8 7 9 512 0.016
scoped_resource gen 24 28 27 1,356 0.018
parse gen 24 25 22 960 0.025
containers gen 6 8 5 128 0.049
classes gen 2 1 1 36 0.050
tuple_return_value gen 14 17 14 249 0.057
files gen 7 6 7 103 0.066
length gen 37 35 37 242 0.152
cartesian gen 67 73 71 407 0.164
escape gen 91 100 92 431 0.212
cgi gen 260 252 259 742 0.351
varargs gen 15 16 20 30 0.504
control_flow gen 135 178 136 155 0.873

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.3 4.5 11.5 0.39
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
cgi gen 3.4 3.5 3.5 7.6 0.45
modules gen 3.4 3.5 3.5 7.6 0.45
parse gen 3.7 3.7 3.8 8.1 0.45
loops gen 3.5 3.7 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.7 48.2 0.59
varargs gen 5.4 5.4 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 4 2 5 0.000
files gen 0 1 0 5 0.000
loops gen 0 0 0 5 0.000
modules gen 1 0 0 9 0.079
parse gen 1 2 3 10 0.102
fib_recursive gen 1 0 2 9 0.115
fib_iter gen 1 1 1 8 0.127
classes gen 1 2 1 7 0.128
gc_stack_roots gen 1 1 1 10 0.139
tuple_return_value gen 1 0 1 6 0.168
length gen 2 2 2 8 0.249
containers gen 7 6 9 27 0.271
asdl_generated gen 2 3 1 7 0.284
cgi gen 2 1 2 6 0.334
scoped_resource gen 6 3 3 9 0.677
varargs gen 23 22 19 27 0.858
escape gen 7 6 5 8 0.879
cartesian gen 8 7 4 7 1.144

raw benchmark files