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 239 0.000
loops gen 1 2 1 356 0.002
fib_recursive gen 5 6 5 1,135 0.004
fib_iter gen 6 4 6 965 0.006
asdl_generated gen 8 9 6 514 0.015
scoped_resource gen 26 24 27 1,379 0.019
parse gen 23 26 24 954 0.024
classes gen 1 1 0 32 0.044
tuple_return_value gen 12 16 11 256 0.047
containers gen 6 2 6 124 0.049
files gen 7 5 7 101 0.067
gc_stack_roots gen 1 1 1 10 0.071
length gen 34 37 36 243 0.139
cartesian gen 68 76 68 390 0.175
escape gen 97 101 89 434 0.224
cgi gen 255 252 258 738 0.345
varargs gen 21 18 16 34 0.619
control_flow gen 135 179 134 145 0.930

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.5 4.3 4.3 11.5 0.39
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
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
cgi gen 3.5 3.7 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.5 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
fib_iter gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.5 3.7 7.6 0.48
parse gen 3.9 3.7 3.9 8.1 0.48
containers gen 28.4 28.5 28.5 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
files gen 0 2 0 8 0.000
gc_stack_roots gen 1 0 0 11 0.065
fib_iter gen 1 3 1 9 0.112
classes gen 1 2 3 12 0.116
control_flow gen 1 0 2 8 0.126
escape gen 1 5 9 7 0.143
modules gen 1 0 1 7 0.201
loops gen 2 1 1 8 0.216
asdl_generated gen 2 1 4 9 0.220
containers gen 8 13 8 32 0.252
parse gen 3 1 2 7 0.420
tuple_return_value gen 3 1 4 7 0.427
fib_recursive gen 2 0 1 4 0.455
scoped_resource gen 4 7 3 8 0.491
length gen 5 0 3 10 0.495
varargs gen 17 20 23 23 0.741
cgi gen 6 0 4 6 0.997
cartesian gen 7 4 7 6 1.172

raw benchmark files