facebook/presto — pull request #1320 by cberner (2014-05-20 22:48:35+00:00)
Title: Refactor aggregations

Introduce a new base class for aggregation functions that makes them
simpler to write.

It looks like there's a small (~3% performance regression), but given how much this simplifies the code, I think it's worthwhile. We could also try to get that back with byte code generation.

master:
hand_tpch_query_1 :: 2907.023 cpu ms :: in 6M, 361MB, 2.06M/s, 124MB/s :: out 4, 300B, 1/s, 103B/s
hand_tpch_query_6 :: 308.901 cpu ms :: in 6M, 240MB, 19.4M/s, 778MB/s :: out 1, 9B, 3/s, 29B/s

my branch:
hand_tpch_query_1 :: 2937.362 cpu ms :: in 6M, 361MB, 2.04M/s, 123MB/s :: out 4, 300B, 1/s, 102B/s
hand_tpch_query_6 :: 321.828 cpu ms :: in 6M, 240MB, 18.6M/s, 747MB/s :: out 1, 9B, 3/s, 27B/s