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 1 1 15 0.000
fib_recursive gen 4 5 6 1,122 0.003
modules gen 1 1 1 233 0.006
loops gen 2 1 2 365 0.007
fib_iter gen 7 6 6 961 0.007
asdl_generated gen 8 7 8 520 0.015
scoped_resource gen 27 30 24 1,349 0.020
parse gen 20 25 26 962 0.020
containers gen 5 7 7 128 0.039
tuple_return_value gen 13 15 13 248 0.053
classes gen 2 2 2 31 0.058
files gen 6 5 5 101 0.058
length gen 37 32 32 242 0.151
cartesian gen 69 71 67 388 0.177
escape gen 91 103 91 430 0.212
cgi gen 263 249 249 723 0.364
varargs gen 17 21 15 35 0.491
control_flow gen 134 178 135 148 0.903

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.5 4.5 11.6 0.38
asdl_generated gen 3.3 3.4 3.3 7.6 0.43
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
cgi gen 3.4 3.5 3.4 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.4 3.4 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.47
files gen 3.7 3.8 3.7 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.0 0.59
varargs gen 5.6 5.4 5.5 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 3 3 8 0.000
fib_iter gen 0 1 1 6 0.000
loops gen 0 2 1 8 0.000
modules gen 0 0 0 9 0.000
classes gen 1 1 1 11 0.081
files gen 1 2 2 6 0.162
control_flow gen 1 0 1 6 0.166
length gen 2 4 6 9 0.226
gc_stack_roots gen 1 1 0 5 0.263
fib_recursive gen 3 1 0 8 0.335
tuple_return_value gen 2 1 2 6 0.336
containers gen 9 7 7 24 0.372
scoped_resource gen 3 2 6 8 0.373
asdl_generated gen 2 3 2 5 0.397
parse gen 6 2 2 9 0.653
escape gen 7 3 7 9 0.772
cartesian gen 6 10 7 7 0.864
varargs gen 21 17 23 22 0.965

raw benchmark files