Increase the precision of the performance benchmarks. (#20159)

This commit is contained in:
Ian Hickson 2018-08-03 16:41:06 -07:00 committed by GitHub
parent a29c6d9bb2
commit a96fb44911
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -163,17 +163,15 @@ class TimelineSummary {
double _averageInMillis(Iterable<Duration> durations) {
if (durations.isEmpty)
throw new ArgumentError('durations is empty!');
final int total = durations.fold<int>(0, (int t, Duration duration) => t + duration.inMilliseconds);
final double total = durations.fold<double>(0.0, (double t, Duration duration) => t + duration.inMicroseconds.toDouble() / 1000.0);
return total / durations.length;
}
double _percentileInMillis(Iterable<Duration> durations, double percentile) {
if (durations.isEmpty)
throw new ArgumentError('durations is empty!');
assert(percentile >= 0.0 && percentile <= 100.0);
final List<double> doubles = durations.map<double>((Duration duration) => duration.inMilliseconds.toDouble()).toList();
final List<double> doubles = durations.map<double>((Duration duration) => duration.inMicroseconds.toDouble() / 1000.0).toList();
doubles.sort();
return doubles[((doubles.length - 1) * (percentile / 100)).round()];
@ -182,9 +180,8 @@ class TimelineSummary {
double _maxInMillis(Iterable<Duration> durations) {
if (durations.isEmpty)
throw new ArgumentError('durations is empty!');
return durations
.map<double>((Duration duration) => duration.inMilliseconds.toDouble())
.map<double>((Duration duration) => duration.inMicroseconds.toDouble() / 1000.0)
.reduce(math.max);
}