SAMZA-1331; Optimize Snapshot class constructor
authorMaksim Logvinenko <mlogvinenko@gmail.com>
Fri, 9 Jun 2017 17:33:08 +0000 (10:33 -0700)
committervjagadish1989 <jvenkatr@linkedin.com>
Fri, 9 Jun 2017 17:33:08 +0000 (10:33 -0700)
commit371473dd19630578784c644f43018b7981d9d3c0
tree016f2a90ddb1e45f13fe2cb0c75d49b42756499a
parent53c43dcecad471ef4ff370c166149abb1b4240a8
SAMZA-1331; Optimize Snapshot class constructor

In some of our workloads (where we need to gather samza metrics five times per minute) `SlidingTimeWindowReservoir.getSnapshot()` method takes up to 10% of processor time.

Almost all of `getSnapshot` time is taken by Collections.sort method. So, the complexity of Snapshot constructor is O(NlogN) + iteration through passed values.

This ticket asks to improve the performance of Snapshot constructor but keep the performance of all other methods at least on the same level.

Author: Maksim Logvinenko <mlogvinenko@gmail.com>

Reviewers: Jagadish V<jagadish@apache.org>

Closes #221 from logarithm/fix-snapshot
samza-api/src/main/java/org/apache/samza/metrics/Snapshot.java
samza-api/src/test/java/org/apache/samza/metrics/TestSnapshot.java