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
classes gen 0 2 2 33 0.000
modules gen 0 1 0 238 0.000
fib_recursive gen 6 5 5 1,092 0.006
fib_iter gen 6 6 6 963 0.006
loops gen 3 2 3 361 0.007
asdl_generated gen 10 7 8 508 0.020
scoped_resource gen 28 28 28 1,352 0.020
parse gen 23 25 23 952 0.024
files gen 4 6 6 99 0.036
containers gen 6 8 4 121 0.048
tuple_return_value gen 15 17 13 253 0.060
gc_stack_roots gen 1 1 1 15 0.097
length gen 33 33 37 243 0.138
cartesian gen 70 75 62 395 0.178
escape gen 95 99 96 430 0.221
cgi gen 256 250 260 743 0.344
varargs gen 15 20 21 30 0.493
control_flow gen 136 178 133 144 0.945

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.3 11.4 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.4 3.7 3.5 7.7 0.44
escape gen 3.4 3.7 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.4 3.7 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.7 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.3 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
asdl_generated gen 0 3 2 6 0.000
control_flow gen 0 2 3 11 0.000
fib_recursive gen 0 1 1 7 0.000
gc_stack_roots gen 0 1 1 6 0.000
loops gen 0 1 0 5 0.000
tuple_return_value gen 0 0 2 9 0.000
fib_iter gen 1 1 1 7 0.146
containers gen 8 7 10 31 0.250
classes gen 3 1 1 10 0.270
modules gen 1 0 1 5 0.282
parse gen 3 2 3 10 0.294
scoped_resource gen 3 3 2 8 0.370
files gen 4 1 1 8 0.442
length gen 5 3 1 10 0.507
cgi gen 5 3 1 9 0.555
escape gen 4 6 1 7 0.571
cartesian gen 4 4 13 7 0.571
varargs gen 24 19 18 26 0.910

raw benchmark files