Skip to content

Commit 947367a

Browse files
authored
Added standard deviation to rasterizer results. (#131781)
This calculation is important if you want to calculate the probability that one thing is better than another.
1 parent 4b176a7 commit 947367a

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

dev/devicelab/lib/tasks/gallery.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ class GalleryTransitionTest {
189189
'90th_percentile_frame_build_time_millis',
190190
'99th_percentile_frame_build_time_millis',
191191
'average_frame_rasterizer_time_millis',
192+
'stddev_frame_rasterizer_time_millis',
192193
'worst_frame_rasterizer_time_millis',
193194
'90th_percentile_frame_rasterizer_time_millis',
194195
'99th_percentile_frame_rasterizer_time_millis',

packages/flutter_driver/lib/src/driver/timeline_summary.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,20 @@ class TimelineSummary {
8282
return _averageInMillis(_extractGpuRasterizerDrawDurations());
8383
}
8484

85+
/// Standard deviation amount of time spent per frame in the engine rasterizer.
86+
///
87+
/// Throws a [StateError] if this summary contains no timeline events.
88+
double computeStandardDeviationFrameRasterizerTimeMillis() {
89+
final List<Duration> durations = _extractGpuRasterizerDrawDurations();
90+
final double average = _averageInMillis(durations);
91+
double tally = 0.0;
92+
for (final Duration duration in durations) {
93+
final double time = duration.inMicroseconds.toDouble() / 1000.0;
94+
tally += (average - time).abs();
95+
}
96+
return tally / durations.length;
97+
}
98+
8599
/// The longest frame rasterization time in milliseconds.
86100
///
87101
/// Throws a [StateError] if this summary contains no timeline events.
@@ -146,6 +160,9 @@ class TimelineSummary {
146160
/// * "average_frame_rasterizer_time_millis": Average amount of time spent
147161
/// per frame in the engine rasterizer.
148162
/// See [computeAverageFrameRasterizerTimeMillis].
163+
/// * "stddev_frame_rasterizer_time_millis": Standard deviation of the amount
164+
/// of time spent per frame in the engine rasterizer.
165+
/// See [computeStandardDeviationFrameRasterizerTimeMillis].
149166
/// * "90th_percentile_frame_rasterizer_time_millis" and
150167
/// "99th_percentile_frame_rasterizer_time_millis": The 90/99-th percentile
151168
/// frame rasterization time in milliseconds.
@@ -240,6 +257,7 @@ class TimelineSummary {
240257
'worst_frame_build_time_millis': computeWorstFrameBuildTimeMillis(),
241258
'missed_frame_build_budget_count': computeMissedFrameBuildBudgetCount(),
242259
'average_frame_rasterizer_time_millis': computeAverageFrameRasterizerTimeMillis(),
260+
'stddev_frame_rasterizer_time_millis': computeStandardDeviationFrameRasterizerTimeMillis(),
243261
'90th_percentile_frame_rasterizer_time_millis': computePercentileFrameRasterizerTimeMillis(90.0),
244262
'99th_percentile_frame_rasterizer_time_millis': computePercentileFrameRasterizerTimeMillis(99.0),
245263
'worst_frame_rasterizer_time_millis': computeWorstFrameRasterizerTimeMillis(),

packages/flutter_driver/test/src/real_tests/timeline_summary_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@ void main() {
463463
'worst_frame_build_time_millis': 19.0,
464464
'missed_frame_build_budget_count': 2,
465465
'average_frame_rasterizer_time_millis': 16.0,
466+
'stddev_frame_rasterizer_time_millis': 4.0,
466467
'90th_percentile_frame_rasterizer_time_millis': 20.0,
467468
'99th_percentile_frame_rasterizer_time_millis': 20.0,
468469
'worst_frame_rasterizer_time_millis': 20.0,
@@ -578,6 +579,7 @@ void main() {
578579
'99th_percentile_frame_build_time_millis': 19.0,
579580
'missed_frame_build_budget_count': 2,
580581
'average_frame_rasterizer_time_millis': 16.0,
582+
'stddev_frame_rasterizer_time_millis': 4.0,
581583
'90th_percentile_frame_rasterizer_time_millis': 20.0,
582584
'99th_percentile_frame_rasterizer_time_millis': 20.0,
583585
'worst_frame_rasterizer_time_millis': 20.0,

0 commit comments

Comments
 (0)