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 11 0.000
loops gen 1 1 3 366 0.002
fib_recursive gen 5 5 5 1,095 0.005
fib_iter gen 5 5 7 968 0.005
modules gen 1 1 1 237 0.006
asdl_generated gen 9 9 9 516 0.017
parse gen 17 23 22 943 0.018
scoped_resource gen 27 28 29 1,357 0.020
tuple_return_value gen 12 13 15 247 0.048
classes gen 2 2 1 37 0.049
files gen 6 5 5 99 0.058
containers gen 7 7 5 125 0.059
length gen 36 35 37 247 0.145
cartesian gen 69 73 68 392 0.175
escape gen 95 97 97 423 0.225
cgi gen 259 238 260 718 0.360
varargs gen 23 11 17 30 0.773
control_flow gen 136 178 133 157 0.869

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.5 4.5 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
cartesian gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
escape gen 3.5 3.4 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
parse gen 3.7 3.7 3.8 8.0 0.46
cgi gen 3.5 3.4 3.7 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
files gen 3.7 3.7 3.7 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
containers gen 28.3 28.5 28.5 48.2 0.59
varargs gen 5.5 5.6 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 0 1 9 0.000
asdl_generated gen 1 1 1 11 0.100
files gen 1 2 2 9 0.106
classes gen 1 1 1 7 0.128
gc_stack_roots gen 1 1 1 10 0.143
fib_recursive gen 1 1 1 7 0.149
cgi gen 2 10 2 9 0.222
containers gen 6 7 9 27 0.234
loops gen 2 2 0 7 0.243
control_flow gen 1 1 2 4 0.251
fib_iter gen 2 2 0 7 0.289
escape gen 3 8 3 8 0.376
scoped_resource gen 3 3 2 7 0.425
tuple_return_value gen 3 3 0 6 0.493
varargs gen 15 28 22 26 0.582
length gen 3 2 2 5 0.594
parse gen 8 4 3 12 0.677
cartesian gen 6 7 6 7 0.853

raw benchmark files