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 204 0.000
fib_recursive gen 4 5 5 1,033 0.004
fib_iter gen 5 6 5 786 0.007
loops gen 2 1 1 319 0.007
asdl_generated gen 7 8 9 511 0.015
scoped_resource gen 28 31 27 1,220 0.023
classes gen 1 1 1 33 0.024
parse gen 23 23 24 899 0.026
containers gen 5 3 5 115 0.042
gc_stack_roots gen 1 1 0 13 0.048
files gen 5 6 3 90 0.057
tuple_return_value gen 14 16 11 213 0.067
length gen 31 31 33 228 0.137
cartesian gen 68 73 66 356 0.190
escape gen 83 90 84 379 0.219
cgi gen 190 177 185 655 0.290
varargs gen 20 11 13 29 0.692
control_flow gen 124 168 124 137 0.910

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.6 4.3 4.5 11.5 0.40
gc_stack_roots gen 3.3 3.4 3.4 7.9 0.42
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.5 3.7 3.5 7.9 0.45
length gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.5 3.7 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.9 0.48
parse gen 3.9 3.9 3.8 8.1 0.48
fib_iter gen 3.8 3.7 3.7 7.7 0.49
files gen 3.8 3.9 3.7 7.7 0.49
loops gen 3.8 3.7 3.5 7.7 0.49
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.6 28.5 28.5 48.2 0.59
varargs gen 5.5 5.4 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 2 1 2 0.000
tuple_return_value gen 0 0 3 9 0.000
gc_stack_roots gen 1 0 1 5 0.126
files gen 1 0 3 6 0.171
cgi gen 1 1 1 5 0.200
cartesian gen 1 2 3 5 0.202
modules gen 1 0 1 6 0.223
control_flow gen 1 0 1 4 0.249
parse gen 1 3 1 4 0.250
length gen 1 1 0 4 0.251
fib_iter gen 1 0 1 3 0.301
classes gen 2 1 2 5 0.312
varargs gen 4 13 11 8 0.501
containers gen 9 10 8 17 0.516
fib_recursive gen 2 1 1 3 0.613
escape gen 2 5 2 3 0.668
asdl_generated gen 2 2 1 3 0.710
scoped_resource gen 2 1 3 2 0.986

raw benchmark files