in metrics/src/main/java/com/facebook/battery/metrics/cpu/CpuFrequencyMetrics.java [87:120]
public CpuFrequencyMetrics diff(
@Nullable CpuFrequencyMetrics b, @Nullable CpuFrequencyMetrics output) {
if (output == null) {
output = new CpuFrequencyMetrics();
}
if (b == null) {
output.set(this);
} else {
for (int i = 0; i < timeInStateS.length; i++) {
SparseIntArray aCore = timeInStateS[i];
SparseIntArray bCore = b.timeInStateS[i];
SparseIntArray outputCore = output.timeInStateS[i];
boolean hasCoreReset = false;
for (int j = 0, size = aCore.size(); j < size && !hasCoreReset; j++) {
int frequency = aCore.keyAt(j);
int difference = aCore.valueAt(j) - bCore.get(frequency, 0);
if (difference < 0) {
hasCoreReset = true;
break;
}
outputCore.put(frequency, difference);
}
if (hasCoreReset) {
copyArrayInto(aCore, outputCore);
}
}
}
return output;
}