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
classes gen 0 1 2 33 0.000
loops gen 1 2 1 358 0.004
fib_recursive gen 5 5 6 1,100 0.004
modules gen 1 1 0 240 0.006
fib_iter gen 6 4 6 951 0.006
asdl_generated gen 8 7 6 512 0.016
scoped_resource gen 27 27 30 1,383 0.019
parse gen 24 27 24 959 0.025
files gen 5 4 6 97 0.046
tuple_return_value gen 12 16 14 254 0.047
gc_stack_roots gen 1 1 1 14 0.049
containers gen 7 8 5 129 0.053
length gen 36 33 32 243 0.147
cartesian gen 64 68 65 391 0.165
escape gen 96 97 93 425 0.226
cgi gen 253 252 261 739 0.343
varargs gen 18 15 16 26 0.692
control_flow gen 136 179 136 152 0.892

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.3 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.3 7.7 0.42
asdl_generated gen 3.3 3.4 3.3 7.6 0.43
modules gen 3.4 3.7 3.5 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.7 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
files gen 3.7 3.7 3.7 7.7 0.47
length gen 3.7 3.7 3.5 7.7 0.47
loops 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
parse gen 3.9 3.9 3.8 8.0 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 4 0.000
modules gen 0 0 1 6 0.000
escape gen 1 8 5 9 0.111
gc_stack_roots gen 1 0 0 6 0.114
parse gen 1 0 1 7 0.145
loops gen 1 1 2 8 0.158
fib_iter gen 1 3 1 6 0.169
fib_recursive gen 2 1 0 8 0.225
files gen 2 3 1 10 0.225
classes gen 3 1 1 12 0.228
asdl_generated gen 2 3 4 8 0.249
containers gen 8 7 9 25 0.311
tuple_return_value gen 3 1 1 9 0.334
length gen 3 3 6 8 0.372
scoped_resource gen 3 6 2 7 0.425
cgi gen 4 0 1 9 0.445
varargs gen 21 24 23 30 0.700
cartesian gen 12 10 10 6 1.980

raw benchmark files