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 4 6 5 1,073 0.004
modules gen 1 1 0 230 0.006
fib_iter gen 6 7 6 963 0.006
loops gen 3 2 3 367 0.007
asdl_generated gen 9 9 10 520 0.017
scoped_resource gen 29 32 29 1,375 0.021
parse gen 24 23 24 963 0.025
classes gen 1 0 2 31 0.029
files gen 5 5 7 102 0.047
tuple_return_value gen 15 15 12 245 0.061
containers gen 8 3 5 125 0.063
gc_stack_roots gen 1 1 1 10 0.070
length gen 38 32 36 240 0.158
cartesian gen 66 76 63 391 0.169
escape gen 91 97 94 430 0.212
cgi gen 260 246 259 742 0.351
varargs gen 14 20 12 29 0.483
control_flow gen 133 175 140 142 0.941

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.2 4.5 4.3 11.5 0.37
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
loops gen 3.5 3.7 3.7 7.7 0.46
parse gen 3.7 3.9 3.8 8.0 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.5 0.47
fib_iter gen 3.7 3.5 3.4 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.3 28.4 28.5 48.2 0.59
varargs gen 5.5 5.5 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 1 0 7 0.000
modules gen 0 0 1 7 0.000
tuple_return_value gen 0 2 3 5 0.000
gc_stack_roots gen 1 1 1 10 0.070
parse gen 1 4 1 10 0.101
cgi gen 1 4 1 8 0.125
fib_iter gen 1 0 1 8 0.126
asdl_generated gen 1 1 0 8 0.137
length gen 1 4 3 7 0.143
scoped_resource gen 1 0 1 7 0.144
classes gen 2 3 1 12 0.149
fib_recursive gen 2 0 1 9 0.198
control_flow gen 2 4 0 10 0.201
containers gen 6 11 8 24 0.246
files gen 2 2 0 6 0.317
escape gen 6 7 4 9 0.667
varargs gen 24 19 26 26 0.924
cartesian gen 9 3 12 9 1.002

raw benchmark files