in metrics/src/main/java/com/facebook/battery/metrics/sensor/SensorMetrics.java [109:145]
private void op(
int sign,
SparseArray<Consumption> a,
SparseArray<Consumption> b,
SparseArray<Consumption> output) {
output.clear();
for (int i = 0, l = a.size(); i < l; i++) {
int key = a.keyAt(i);
Consumption result;
if (sign > 0) {
result = a.valueAt(i).sum(b.get(key, ZERO));
} else {
result = a.valueAt(i).diff(b.get(key, ZERO));
}
if (!ZERO.equals(result)) {
output.put(key, result);
}
}
for (int j = 0, l = b.size(); j < l; j++) {
int key = b.keyAt(j);
if (a.get(key) == null) {
Consumption result;
if (sign > 0) {
result = ZERO.sum(b.valueAt(j));
} else {
result = ZERO.diff(b.valueAt(j));
}
if (!ZERO.equals(result)) {
output.put(key, result);
}
}
}
}