@Override public double getPercentCallsFinishedInMillis(int millis) { if (millis <= 0) { return 0.0; } long localTotalCalls = totalCalls; if (localTotalCalls == 0) { return 100.0; } long upper = 1; int comparisonPoint = 1; // comparisonPoint = 1 corresponds to % of numbers > 1 while (upper < millis) { upper <<= 1; comparisonPoint++; } resizeUnderStats(comparisonPoint); double prev = 1.0 - ((double) underStatsMillis.get(comparisonPoint - 1).get()) / localTotalCalls; double next = 1.0 - ((double) underStatsMillis.get(comparisonPoint).get()) / localTotalCalls; // lerp(x0, y0, x1, y1, x) -> y return 100.0 * lerp(upper / 2.0, prev, upper, next, millis); }
percent = 100.0 * ((double) underStatsMillis.get(comparisonPoint).get()) / localTotalCalls; double ret = lerp(prevPerc, millis / 2.0, percent, millis, mustBeBellow); if (ret > maxInMillis) { return maxInMillis;
@Override public double getPercentCallsFinishedInMillis(int millis) { if (millis <= 0) { return 0.0; } long localTotalCalls = totalCalls; if (localTotalCalls == 0) { return 100.0; } long upper = 1; int comparisonPoint = 1; // comparisonPoint = 1 corresponds to % of numbers > 1 while (upper < millis) { upper <<= 1; comparisonPoint++; } resizeUnderStats(comparisonPoint); double prev = 1.0 - ((double) underStatsMillis.get(comparisonPoint - 1).get()) / localTotalCalls; double next = 1.0 - ((double) underStatsMillis.get(comparisonPoint).get()) / localTotalCalls; // lerp(x0, y0, x1, y1, x) -> y return 100.0 * lerp(upper / 2.0, prev, upper, next, millis); }
percent = 100.0 * ((double) underStatsMillis.get(comparisonPoint).get()) / localTotalCalls; double ret = lerp(prevPerc, millis / 2.0, percent, millis, mustBeBellow); if (ret > maxInMillis) { return maxInMillis;