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
modules gen 0 1 1 233 0.000
loops gen 1 3 1 364 0.002
fib_recursive gen 5 6 5 1,091 0.005
fib_iter gen 6 5 7 971 0.006
scoped_resource gen 22 27 27 1,394 0.016
asdl_generated gen 9 7 9 518 0.017
parse gen 22 24 23 960 0.023
containers gen 5 8 6 118 0.041
tuple_return_value gen 13 13 12 245 0.055
files gen 6 5 6 102 0.057
gc_stack_roots gen 1 0 1 11 0.066
classes gen 3 1 2 34 0.080
length gen 35 31 37 240 0.145
cartesian gen 68 76 71 392 0.172
escape gen 95 101 93 428 0.221
cgi gen 258 253 260 726 0.355
varargs gen 19 19 17 32 0.592
control_flow gen 134 176 135 146 0.917

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.2 4.2 11.6 0.37
asdl_generated gen 3.3 3.3 3.3 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.7 3.8 8.0 0.46
files gen 3.7 3.8 3.8 7.7 0.47
scoped_resource gen 3.7 3.7 3.5 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.4 28.6 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
classes gen 0 2 1 10 0.000
gc_stack_roots gen 1 1 0 10 0.073
fib_recursive gen 1 0 1 9 0.117
modules gen 1 0 1 10 0.142
asdl_generated gen 1 3 1 7 0.143
files gen 1 2 1 6 0.164
control_flow gen 1 2 1 6 0.166
fib_iter gen 1 2 0 6 0.169
tuple_return_value gen 2 3 3 8 0.239
containers gen 9 6 8 32 0.269
loops gen 2 0 1 6 0.288
cgi gen 2 1 2 6 0.333
length gen 4 5 2 8 0.499
escape gen 4 4 4 7 0.576
parse gen 3 3 3 5 0.586
varargs gen 21 19 22 26 0.806
scoped_resource gen 8 4 3 9 0.884
cartesian gen 8 6 4 8 0.994

raw benchmark files