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 1 234 0.000
loops gen 1 2 1 352 0.002
fib_recursive gen 5 5 5 1,107 0.005
fib_iter gen 7 7 5 938 0.008
asdl_generated gen 9 7 9 512 0.017
scoped_resource gen 28 28 27 1,370 0.020
parse gen 22 26 22 949 0.023
containers gen 4 5 2 119 0.034
gc_stack_roots gen 1 1 1 15 0.049
tuple_return_value gen 14 15 14 249 0.056
files gen 6 6 6 96 0.062
classes gen 3 3 2 34 0.078
length gen 33 30 32 242 0.136
cartesian gen 69 75 68 388 0.178
escape gen 90 102 91 420 0.215
cgi gen 258 248 256 737 0.350
varargs gen 19 20 13 29 0.654
control_flow gen 137 175 133 143 0.953

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.5 4.5 11.5 0.39
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
parse gen 3.8 3.8 3.8 8.3 0.46
modules gen 3.5 3.5 3.7 7.6 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
loops gen 3.7 3.5 3.7 7.6 0.48
files gen 3.8 3.8 3.7 7.7 0.49
tuple_return_value gen 3.8 3.7 3.5 7.6 0.50
containers gen 28.7 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 0 1 9 0.000
fib_iter gen 0 0 2 9 0.000
files gen 1 1 1 11 0.091
control_flow gen 1 3 2 9 0.112
gc_stack_roots gen 1 0 0 6 0.123
asdl_generated gen 1 3 1 7 0.141
tuple_return_value gen 1 2 1 7 0.142
fib_recursive gen 1 1 1 6 0.173
scoped_resource gen 2 4 3 11 0.186
modules gen 1 1 1 7 0.204
loops gen 2 2 1 7 0.246
containers gen 9 9 11 31 0.296
cgi gen 3 4 0 7 0.429
parse gen 4 1 3 9 0.441
length gen 6 6 6 11 0.544
varargs gen 19 19 25 28 0.677
escape gen 7 3 7 9 0.782
cartesian gen 6 5 7 7 0.858

raw benchmark files