Implement xrate/xincrease/xdelta functions, as per #3746 #3760
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Took a while to figure out that I also needed to tweak
(*Engine).populateIterators()
in order to get the extra point(s) before the range start, but it's finally done. And, if I might say so, it's relatively clean (minus the range adjustment at the top ofexactRate()
.I ended up making one slight change from my original proposal, which is not to adjust the increase by
range / sampledInterval
, as it would only add noise. If the range is not an "exact" multiple of the sampling interval, I believe it's OK to get a sawtooth pattern for smoothly increasing counters for the price of an exact value (which is quite useful for not-so-smoothly increasing counters). Rates (xrate
andxdelta
) are not affected by this, as they are always divided by the actual sampled interval, so they will be perfectly smooth for a perfectly smooth counter.