// There is no point in having more buckets than our timestamp
// granularity: otherwise we would have buckets that could never be used.
if (nBuckets > size_t(duration_.count())) {
- nBuckets = duration_.count();
+ nBuckets = size_t(duration_.count());
}
buckets_.resize(nBuckets, Bucket());
TimePoint bucketStart,
TimePoint nextBucketStart) -> bool {
sample_count += this->rangeAdjust(
- bucketStart, nextBucketStart, start, end, bucket.count);
+ bucketStart, nextBucketStart, start, end, ValueType(bucket.count));
return true;
});
total += this->rangeAdjust(
bucketStart, nextBucketStart, start, end, bucket.sum);
sample_count += this->rangeAdjust(
- bucketStart, nextBucketStart, start, end, bucket.count);
+ bucketStart, nextBucketStart, start, end, ValueType(bucket.count));
return true;
});
Duration timeMod = time.time_since_epoch() % duration_;
TimeInt numFullDurations = time.time_since_epoch() / duration_;
- TimeInt scaledTime = timeMod.count() * buckets_.size();
+ TimeInt scaledTime = timeMod.count() * TimeInt(buckets_.size());
// Keep these two lines together. The compiler should be able to compute
// both the division and modulus with a single operation.
- *bucketIdx = scaledTime / duration_.count();
+ *bucketIdx = size_t(scaledTime / duration_.count());
TimeInt scaledOffsetInBucket = scaledTime % duration_.count();
TimeInt scaledBucketStart = scaledTime - scaledOffsetInBucket;
Duration timeMod = latestTime_.time_since_epoch() % duration_;
TimeInt numFullDurations = latestTime_.time_since_epoch() / duration_;
TimePoint durationStart(numFullDurations * duration_);
- TimeInt scaledTime = timeMod.count() * buckets_.size();
- size_t latestBucketIdx = scaledTime / duration_.count();
+ TimeInt scaledTime = timeMod.count() * TimeInt(buckets_.size());
+ size_t latestBucketIdx = size_t(scaledTime / duration_.count());
TimeInt scaledOffsetInBucket = scaledTime % duration_.count();
TimeInt scaledBucketStart = scaledTime - scaledOffsetInBucket;
TimeInt scaledNextBucketStart = scaledBucketStart + duration_.count();