public CpuFrequencyMetrics diff()

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;
  }