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 0 13 0.000
loops gen 1 2 3 362 0.002
fib_recursive gen 6 5 5 1,110 0.006
modules gen 2 1 1 235 0.006
fib_iter gen 7 5 6 956 0.008
asdl_generated gen 7 9 8 559 0.012
scoped_resource gen 27 25 27 1,370 0.020
parse gen 23 26 21 954 0.025
files gen 5 5 6 101 0.045
classes gen 2 2 3 39 0.046
containers gen 6 7 6 126 0.048
tuple_return_value gen 14 16 12 244 0.058
length gen 36 35 35 240 0.150
cartesian gen 65 76 68 396 0.163
escape gen 92 101 94 439 0.210
cgi gen 262 252 259 724 0.361
varargs gen 16 16 18 34 0.472
control_flow gen 135 178 135 147 0.918

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.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.5 3.4 3.4 7.7 0.46
modules gen 3.5 3.7 3.7 7.7 0.46
parse gen 3.8 3.8 3.8 8.3 0.46
fib_iter gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.4 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.5 3.7 3.7 7.6 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
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.5 5.6 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 2 1 10 0.000
fib_iter gen 0 2 1 8 0.000
fib_recursive gen 0 1 1 5 0.000
modules gen 0 0 0 8 0.000
control_flow gen 1 1 1 9 0.112
tuple_return_value gen 1 1 3 8 0.126
gc_stack_roots gen 1 0 1 8 0.178
classes gen 1 1 0 5 0.181
loops gen 2 1 0 7 0.248
parse gen 2 1 4 8 0.255
asdl_generated gen 3 1 2 11 0.272
files gen 2 2 1 8 0.285
containers gen 8 7 8 28 0.288
scoped_resource gen 3 7 3 8 0.374
length gen 3 2 4 8 0.375
varargs gen 23 23 21 24 0.960
cartesian gen 9 4 7 9 0.995
escape gen 7 5 3 4 1.736

raw benchmark files