Title: [199616] trunk/PerformanceTests
Revision
199616
Author
[email protected]
Date
2016-04-15 18:02:59 -0700 (Fri, 15 Apr 2016)

Log Message

Animometer test could report a NaN
https://bugs.webkit.org/show_bug.cgi?id=156646

Reviewed by Darin Adler.
Provisionally reviewed by Said Abou-Hallawa.

* Animometer/tests/resources/main.js:
(didFinishInterval): The ramp controller has a first phase where it ramps up the complexity and
reacts based on how well the system handles the load. The assumption was that it would handle at least
1 particle easily. That is not always the case. As a result, an interpolation calculation could
end up setting an upper bound of NaN.

This occurs because we never get out of the first tier, so this._lastTierComplexity is undefined.
Now that we guarantee a minimum complexity of 1, modify the conditional to check for this._lastTierComplexity
before interpolating the upper bound of the first ramp. In the case where the system struggles with
1 particle, set it to currentComplexity.

Modified Paths

Diff

Modified: trunk/PerformanceTests/Animometer/tests/resources/main.js (199615 => 199616)


--- trunk/PerformanceTests/Animometer/tests/resources/main.js	2016-04-16 00:01:59 UTC (rev 199615)
+++ trunk/PerformanceTests/Animometer/tests/resources/main.js	2016-04-16 01:02:59 UTC (rev 199616)
@@ -413,10 +413,11 @@
             this._possibleMinimumComplexity = this._minimumComplexity;
             this._minimumComplexityEstimator.sample(this._minimumComplexity);
 
-            // Sometimes this last tier will drop the frame length well below the threshold
-            // Avoid going down that far since it means fewer measurements are taken in the 60 fps area
-            // Interpolate a maximum complexity that gets us around the lowest threshold
-            if (this._lastTierComplexity != currentComplexity)
+            // Sometimes this last tier will drop the frame length well below the threshold.
+            // Avoid going down that far since it means fewer measurements are taken in the 60 fps area.
+            // Interpolate a maximum complexity that gets us around the lowest threshold.
+            // Avoid doing this calculation if we never get out of the first tier (where this._lastTierComplexity is undefined).
+            if (this._lastTierComplexity && this._lastTierComplexity != currentComplexity)
                 this._maximumComplexity = Math.floor(Utilities.lerp(Utilities.progressValue(this.frameLengthSlowestThreshold, this._lastTierFrameLength, currentFrameLength), this._lastTierComplexity, currentComplexity));
             else {
                 // If the browser is capable of handling the most complex version of the test, use that

Modified: trunk/PerformanceTests/ChangeLog (199615 => 199616)


--- trunk/PerformanceTests/ChangeLog	2016-04-16 00:01:59 UTC (rev 199615)
+++ trunk/PerformanceTests/ChangeLog	2016-04-16 01:02:59 UTC (rev 199616)
@@ -1,3 +1,22 @@
+2016-04-15  Jon Lee  <[email protected]>
+
+        Animometer test could report a NaN
+        https://bugs.webkit.org/show_bug.cgi?id=156646
+
+        Reviewed by Darin Adler.
+        Provisionally reviewed by Said Abou-Hallawa.
+
+        * Animometer/tests/resources/main.js:
+        (didFinishInterval): The ramp controller has a first phase where it ramps up the complexity and
+        reacts based on how well the system handles the load. The assumption was that it would handle at least
+        1 particle easily. That is not always the case. As a result, an interpolation calculation could
+        end up setting an upper bound of NaN.
+
+        This occurs because we never get out of the first tier, so this._lastTierComplexity is undefined.
+        Now that we guarantee a minimum complexity of 1, modify the conditional to check for this._lastTierComplexity
+        before interpolating the upper bound of the first ramp. In the case where the system struggles with
+        1 particle, set it to currentComplexity.
+
 2016-04-09  Jon Lee  <[email protected]>
 
         Update Animometer to accommodate different screens
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to