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 0 232 0.000
loops gen 1 2 2 367 0.003
fib_recursive gen 6 6 6 1,100 0.006
fib_iter gen 6 7 6 962 0.006
asdl_generated gen 8 9 8 500 0.016
scoped_resource gen 27 29 27 1,376 0.019
parse gen 21 24 24 943 0.023
containers gen 4 6 7 129 0.032
tuple_return_value gen 12 14 14 245 0.049
files gen 6 6 5 99 0.060
classes gen 3 2 3 35 0.077
gc_stack_roots gen 1 1 0 15 0.092
length gen 36 34 36 244 0.146
cartesian gen 74 74 71 390 0.190
escape gen 96 99 96 432 0.223
cgi gen 258 248 260 738 0.349
varargs gen 17 16 17 32 0.534
control_flow gen 135 181 132 146 0.919

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.3 3.4 3.4 7.6 0.43
cgi gen 3.4 3.4 3.4 7.9 0.43
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.4 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.4 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.4 28.3 28.5 48.4 0.59
varargs gen 5.6 5.5 5.4 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 0 8 0.000
fib_recursive gen 0 0 0 10 0.000
gc_stack_roots gen 0 0 1 6 0.000
fib_iter gen 1 0 1 9 0.111
loops gen 1 1 1 9 0.139
files gen 1 1 2 7 0.141
control_flow gen 1 1 3 6 0.166
modules gen 1 1 1 8 0.173
asdl_generated gen 2 1 2 9 0.221
escape gen 2 8 3 7 0.287
tuple_return_value gen 3 2 1 8 0.376
length gen 3 2 3 8 0.381
containers gen 9 8 6 24 0.388
cartesian gen 4 7 4 10 0.401
cgi gen 3 5 2 7 0.429
scoped_resource gen 4 3 4 8 0.496
parse gen 4 3 2 7 0.558
varargs gen 21 22 22 24 0.880

raw benchmark files