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_iter gen 5 6 6 962 0.005
fib_recursive gen 6 4 5 1,123 0.006
modules gen 1 1 0 236 0.006
loops gen 3 3 3 353 0.007
asdl_generated gen 8 9 7 513 0.016
scoped_resource gen 24 27 27 1,357 0.018
parse gen 20 26 24 951 0.022
classes gen 1 2 1 31 0.029
files gen 5 5 6 108 0.045
containers gen 6 6 4 126 0.050
tuple_return_value gen 14 15 14 248 0.057
gc_stack_roots gen 1 0 0 12 0.118
length gen 37 35 35 246 0.151
cartesian gen 70 75 67 391 0.179
escape gen 95 97 93 440 0.216
cgi gen 255 251 259 725 0.351
varargs gen 13 18 12 27 0.475
control_flow gen 136 174 131 147 0.922

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
parse gen 3.7 3.8 3.8 8.3 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.7 3.5 7.6 0.47
length gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
fib_recursive gen 3.7 3.7 3.4 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
files gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.7 28.3 48.3 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
control_flow gen 0 5 4 7 0.000
fib_recursive gen 0 2 1 8 0.000
gc_stack_roots gen 0 1 1 9 0.000
loops gen 0 0 0 11 0.000
modules gen 0 1 1 6 0.000
classes gen 2 1 2 13 0.137
tuple_return_value gen 1 2 1 6 0.168
asdl_generated gen 2 1 3 10 0.200
length gen 2 2 4 8 0.252
fib_iter gen 2 1 1 8 0.252
containers gen 7 8 10 26 0.280
cgi gen 4 2 1 11 0.364
files gen 2 2 1 5 0.391
parse gen 5 1 1 9 0.542
scoped_resource gen 6 4 3 11 0.542
cartesian gen 5 11 8 8 0.625
varargs gen 26 20 27 29 0.884
escape gen 5 8 4 4 1.241

raw benchmark files