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 0 0 235 0.000
fib_recursive gen 5 5 5 1,110 0.004
loops gen 2 2 3 365 0.005
fib_iter gen 6 7 6 950 0.006
asdl_generated gen 7 8 10 507 0.014
scoped_resource gen 30 29 27 1,364 0.022
parse gen 23 23 23 954 0.024
classes gen 1 3 2 36 0.024
tuple_return_value gen 12 16 12 245 0.048
files gen 5 6 6 98 0.049
containers gen 7 5 5 136 0.051
gc_stack_roots gen 1 0 1 12 0.057
length gen 36 33 38 243 0.147
cartesian gen 63 75 72 392 0.162
escape gen 94 108 91 426 0.221
cgi gen 256 250 255 756 0.339
varargs gen 20 21 15 24 0.843
control_flow gen 133 179 133 147 0.909

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.6 0.37
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
fib_recursive gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.4 7.9 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
length gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
files gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
loops gen 3.7 3.8 3.5 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
scoped_resource gen 3.7 3.4 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.7 0.49
containers gen 28.5 28.5 28.4 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
scoped_resource gen 1 2 3 12 0.085
gc_stack_roots gen 1 1 0 8 0.085
loops gen 1 1 0 8 0.108
fib_iter gen 1 0 1 7 0.145
control_flow gen 1 2 2 6 0.166
modules gen 1 1 1 6 0.236
files gen 2 1 1 8 0.242
classes gen 2 0 1 7 0.251
parse gen 2 4 3 8 0.253
fib_recursive gen 2 1 2 7 0.257
containers gen 7 9 9 26 0.268
tuple_return_value gen 3 1 3 10 0.294
cgi gen 3 2 6 9 0.334
asdl_generated gen 3 2 0 8 0.371
escape gen 4 3 7 10 0.400
length gen 3 3 2 7 0.437
varargs gen 17 18 23 34 0.506
cartesian gen 10 5 3 7 1.413

raw benchmark files