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 12 0.000
modules gen 0 0 1 230 0.000
loops gen 1 3 2 385 0.002
fib_recursive gen 5 4 4 1,080 0.005
fib_iter gen 6 7 7 968 0.006
asdl_generated gen 8 7 10 505 0.016
scoped_resource gen 27 27 27 1,356 0.020
parse gen 25 24 25 937 0.027
containers gen 5 7 8 128 0.038
classes gen 1 2 1 34 0.039
tuple_return_value gen 11 16 15 249 0.046
files gen 5 7 6 99 0.049
length gen 31 28 35 238 0.129
cartesian gen 67 69 69 394 0.170
escape gen 90 103 96 430 0.209
cgi gen 256 249 252 739 0.347
varargs gen 18 19 20 35 0.519
control_flow gen 138 178 133 149 0.925

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.3 4.3 11.4 0.38
asdl_generated gen 3.3 3.4 3.3 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.5 7.7 0.44
escape gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.4 3.5 7.7 0.46
cgi gen 3.5 3.5 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
parse gen 3.8 3.8 3.8 8.1 0.47
length gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.5 3.8 7.5 0.51
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 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 2 8 0.000
parse gen 0 3 0 13 0.000
fib_recursive gen 1 2 3 8 0.129
classes gen 1 1 2 9 0.148
modules gen 1 1 0 9 0.155
gc_stack_roots gen 1 0 1 8 0.172
fib_iter gen 2 0 0 10 0.193
files gen 2 0 1 7 0.275
loops gen 2 0 1 5 0.337
containers gen 9 7 6 25 0.350
scoped_resource gen 3 5 3 8 0.380
asdl_generated gen 2 3 0 4 0.494
cgi gen 4 2 7 8 0.499
length gen 8 8 4 11 0.720
tuple_return_value gen 4 1 0 5 0.756
cartesian gen 8 9 6 9 0.888
escape gen 8 1 3 9 0.888
varargs gen 20 19 19 22 0.918

raw benchmark files