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 3 3 363 0.002
fib_recursive gen 5 6 5 1,093 0.004
fib_iter gen 5 5 7 964 0.005
modules gen 1 1 1 235 0.006
asdl_generated gen 8 9 9 510 0.016
parse gen 20 23 24 959 0.020
scoped_resource gen 31 27 28 1,365 0.023
files gen 4 5 5 99 0.039
tuple_return_value gen 12 14 13 248 0.048
containers gen 7 5 6 130 0.053
classes gen 3 3 2 34 0.079
length gen 32 30 36 246 0.130
cartesian gen 70 71 69 395 0.177
escape gen 94 99 94 431 0.217
cgi gen 255 248 258 719 0.355
varargs gen 19 18 16 33 0.563
control_flow gen 135 179 133 155 0.873

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.5 11.5 0.38
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.5 0.46
cgi gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.7 3.7 7.7 0.49
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 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 0 1 10 0.000
modules gen 0 1 0 8 0.000
scoped_resource gen 1 4 2 8 0.128
control_flow gen 1 0 2 6 0.167
loops gen 2 0 0 10 0.169
gc_stack_roots gen 1 1 1 8 0.173
fib_recursive gen 2 0 1 9 0.201
asdl_generated gen 2 1 1 9 0.220
containers gen 7 9 7 28 0.246
fib_iter gen 2 2 0 8 0.255
files gen 3 2 3 8 0.360
tuple_return_value gen 3 2 2 7 0.428
parse gen 6 4 2 9 0.651
cgi gen 5 3 2 6 0.832
varargs gen 20 20 22 23 0.851
length gen 6 6 3 7 0.859
cartesian gen 5 10 6 5 0.997
escape gen 6 6 5 5 1.193

raw benchmark files