haikuwebkit/PerformanceTests/MotionMark/index.html

98 lines
4.3 KiB
HTML
Raw Permalink Normal View History

Add license for MotionMark https://bugs.webkit.org/show_bug.cgi?id=179222 Reviewed by Ryosuke Niwa. * MotionMark/about.html: * MotionMark/developer.html: * MotionMark/index.html: * MotionMark/resources/debug-runner/graph.js: * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/motionmark.js: * MotionMark/resources/debug-runner/tests.js: * MotionMark/resources/extensions.js: * MotionMark/resources/statistics.js: * MotionMark/resources/strings.js: * MotionMark/tests/3d/resources/webgl.js: * MotionMark/tests/3d/webgl.html: * MotionMark/tests/bouncing-particles/bouncing-canvas-images.html: * MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html: * MotionMark/tests/bouncing-particles/bouncing-css-images.html: * MotionMark/tests/bouncing-particles/bouncing-css-shapes.html: * MotionMark/tests/bouncing-particles/bouncing-svg-images.html: * MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html: * MotionMark/tests/bouncing-particles/bouncing-tagged-images.html: * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js: * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js: * MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js: * MotionMark/tests/bouncing-particles/resources/bouncing-particles.js: * MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js: * MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js: * MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js: * MotionMark/tests/dom/compositing-transforms.html: * MotionMark/tests/dom/focus.html: * MotionMark/tests/dom/leaves.html: * MotionMark/tests/dom/particles.html: * MotionMark/tests/dom/resources/compositing-transforms.js: * MotionMark/tests/dom/resources/dom-particles.js: * MotionMark/tests/dom/resources/focus.js: * MotionMark/tests/dom/resources/leaves.js: * MotionMark/tests/master/canvas-stage.html: * MotionMark/tests/master/focus.html: * MotionMark/tests/master/image-data.html: * MotionMark/tests/master/leaves.html: * MotionMark/tests/master/multiply.html: * MotionMark/tests/master/resources/canvas-stage.js: * MotionMark/tests/master/resources/canvas-tests.js: * MotionMark/tests/master/resources/focus.js: * MotionMark/tests/master/resources/image-data.js: * MotionMark/tests/master/resources/leaves.js: * MotionMark/tests/master/resources/multiply.js: * MotionMark/tests/master/resources/particles.js: * MotionMark/tests/master/resources/svg-particles.js: * MotionMark/tests/master/resources/text.js: * MotionMark/tests/master/svg-particles.html: * MotionMark/tests/master/text.html: * MotionMark/tests/resources/main.js: * MotionMark/tests/resources/math.js: * MotionMark/tests/resources/stage.css: * MotionMark/tests/simple/resources/simple-canvas-paths.js: * MotionMark/tests/simple/resources/simple-canvas.js: * MotionMark/tests/simple/resources/tiled-canvas-image.js: * MotionMark/tests/simple/simple-canvas-paths.html: * MotionMark/tests/simple/tiled-canvas-image.html: * MotionMark/tests/template/resources/template-canvas.js: * MotionMark/tests/template/resources/template-css.js: * MotionMark/tests/template/resources/template-svg.js: * MotionMark/tests/template/template-canvas.html: * MotionMark/tests/template/template-css.html: * MotionMark/tests/template/template-svg.html: Canonical link: https://commits.webkit.org/195326@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@224388 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-03 06:20:22 +00:00
<!--
[MotionMark] Add support for version numbers https://bugs.webkit.org/show_bug.cgi?id=186479 Reviewed by Said Abou-Hallawa. Add support for displaying the version number as well as including it in the JSON results. When loading the front page, script replaces any element with classname version with the version number of the benchmark, which is stored in Strings.version. The JSON structure for the results includes a new version property: { "version": "1.0", "options": { ... }, "data": [ ... ] } When dragging a results file, the version listed will come from the JSON file. Older results will not have had the version property, in which case it will default to "1.0". * MotionMark/index.html: Update title to some other default. Script will update it. Include the version number in the logo title. * MotionMark/developer.html: Ditto. * MotionMark/about.html: Ditto. * MotionMark/resources/runner/motionmark.js: (ResultsDashboard): Update constructor to include version. This is used when serializing results out to JSON, and displaying the results panel in developer mode. (ResultsDashboard._processData): When running the benchmark, include benchmark version string in the results object. (ResultsDashboard.version): (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.sectionsManager.setSectionVersion): Helper function to update the element in the section with the class name version. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, which would be the same as the benchmark version. * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo in a div and include the version string. * MotionMark/resources/strings.js: Add strings for the page title template, and the version. * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/motionmark.js: (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. When dragging in JSON results, look for version to pass to the dashboard. If it doesn't exist, default to "1.0". (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, instead of the current benchmark version. * MotionMark/resources/debug-runner/tests.js: Update page title template. Canonical link: https://commits.webkit.org/202238@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233147 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-06-25 15:38:03 +00:00
Copyright (C) 2015-2018 Apple Inc. All rights reserved.
Add license for MotionMark https://bugs.webkit.org/show_bug.cgi?id=179222 Reviewed by Ryosuke Niwa. * MotionMark/about.html: * MotionMark/developer.html: * MotionMark/index.html: * MotionMark/resources/debug-runner/graph.js: * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/motionmark.js: * MotionMark/resources/debug-runner/tests.js: * MotionMark/resources/extensions.js: * MotionMark/resources/statistics.js: * MotionMark/resources/strings.js: * MotionMark/tests/3d/resources/webgl.js: * MotionMark/tests/3d/webgl.html: * MotionMark/tests/bouncing-particles/bouncing-canvas-images.html: * MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html: * MotionMark/tests/bouncing-particles/bouncing-css-images.html: * MotionMark/tests/bouncing-particles/bouncing-css-shapes.html: * MotionMark/tests/bouncing-particles/bouncing-svg-images.html: * MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html: * MotionMark/tests/bouncing-particles/bouncing-tagged-images.html: * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js: * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js: * MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js: * MotionMark/tests/bouncing-particles/resources/bouncing-particles.js: * MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js: * MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js: * MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js: * MotionMark/tests/dom/compositing-transforms.html: * MotionMark/tests/dom/focus.html: * MotionMark/tests/dom/leaves.html: * MotionMark/tests/dom/particles.html: * MotionMark/tests/dom/resources/compositing-transforms.js: * MotionMark/tests/dom/resources/dom-particles.js: * MotionMark/tests/dom/resources/focus.js: * MotionMark/tests/dom/resources/leaves.js: * MotionMark/tests/master/canvas-stage.html: * MotionMark/tests/master/focus.html: * MotionMark/tests/master/image-data.html: * MotionMark/tests/master/leaves.html: * MotionMark/tests/master/multiply.html: * MotionMark/tests/master/resources/canvas-stage.js: * MotionMark/tests/master/resources/canvas-tests.js: * MotionMark/tests/master/resources/focus.js: * MotionMark/tests/master/resources/image-data.js: * MotionMark/tests/master/resources/leaves.js: * MotionMark/tests/master/resources/multiply.js: * MotionMark/tests/master/resources/particles.js: * MotionMark/tests/master/resources/svg-particles.js: * MotionMark/tests/master/resources/text.js: * MotionMark/tests/master/svg-particles.html: * MotionMark/tests/master/text.html: * MotionMark/tests/resources/main.js: * MotionMark/tests/resources/math.js: * MotionMark/tests/resources/stage.css: * MotionMark/tests/simple/resources/simple-canvas-paths.js: * MotionMark/tests/simple/resources/simple-canvas.js: * MotionMark/tests/simple/resources/tiled-canvas-image.js: * MotionMark/tests/simple/simple-canvas-paths.html: * MotionMark/tests/simple/tiled-canvas-image.html: * MotionMark/tests/template/resources/template-canvas.js: * MotionMark/tests/template/resources/template-css.js: * MotionMark/tests/template/resources/template-svg.js: * MotionMark/tests/template/template-canvas.html: * MotionMark/tests/template/template-css.html: * MotionMark/tests/template/template-svg.html: Canonical link: https://commits.webkit.org/195326@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@224388 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-03 06:20:22 +00:00
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
[MotionMark] Add support for version numbers https://bugs.webkit.org/show_bug.cgi?id=186479 Reviewed by Said Abou-Hallawa. Add support for displaying the version number as well as including it in the JSON results. When loading the front page, script replaces any element with classname version with the version number of the benchmark, which is stored in Strings.version. The JSON structure for the results includes a new version property: { "version": "1.0", "options": { ... }, "data": [ ... ] } When dragging a results file, the version listed will come from the JSON file. Older results will not have had the version property, in which case it will default to "1.0". * MotionMark/index.html: Update title to some other default. Script will update it. Include the version number in the logo title. * MotionMark/developer.html: Ditto. * MotionMark/about.html: Ditto. * MotionMark/resources/runner/motionmark.js: (ResultsDashboard): Update constructor to include version. This is used when serializing results out to JSON, and displaying the results panel in developer mode. (ResultsDashboard._processData): When running the benchmark, include benchmark version string in the results object. (ResultsDashboard.version): (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.sectionsManager.setSectionVersion): Helper function to update the element in the section with the class name version. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, which would be the same as the benchmark version. * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo in a div and include the version string. * MotionMark/resources/strings.js: Add strings for the page title template, and the version. * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/motionmark.js: (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. When dragging in JSON results, look for version to pass to the dashboard. If it doesn't exist, default to "1.0". (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, instead of the current benchmark version. * MotionMark/resources/debug-runner/tests.js: Update page title template. Canonical link: https://commits.webkit.org/202238@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233147 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-06-25 15:38:03 +00:00
<title>MotionMark</title>
Rename the directory and the files of MotionMark from Animometer to MotionMark https://bugs.webkit.org/show_bug.cgi?id=166659 Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-01-06 Reviewed by Jon Lee. Rename the directory and the files of the benchmark to its new name. * MotionMark/developer.html: Renamed from PerformanceTests/Animometer/developer.html. * MotionMark/index.html: Renamed from PerformanceTests/Animometer/index.html. * MotionMark/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/d3.min.js. * MotionMark/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/graph.js. * MotionMark/resources/debug-runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.css. * MotionMark/resources/debug-runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.js. * MotionMark/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/tests.js. * MotionMark/resources/extensions.js: Renamed from PerformanceTests/Animometer/resources/extensions.js. * MotionMark/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/runner/benchmark-runner.js. * MotionMark/resources/runner/crystal.svg: Renamed from PerformanceTests/Animometer/resources/runner/crystal.svg. * MotionMark/resources/runner/lines.svg: Renamed from PerformanceTests/Animometer/resources/runner/lines.svg. * MotionMark/resources/runner/logo.svg: Renamed from PerformanceTests/Animometer/resources/runner/logo.svg. * MotionMark/resources/runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/runner/animometer.css. * MotionMark/resources/runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/runner/animometer.js. * MotionMark/resources/runner/tests.js: Renamed from PerformanceTests/Animometer/resources/runner/tests.js. * MotionMark/resources/statistics.js: Renamed from PerformanceTests/Animometer/resources/statistics.js. * MotionMark/resources/strings.js: Renamed from PerformanceTests/Animometer/resources/strings.js. * MotionMark/tests/3d/resources/webgl.js: Renamed from PerformanceTests/Animometer/tests/3d/resources/webgl.js. * MotionMark/tests/3d/webgl.html: Renamed from PerformanceTests/Animometer/tests/3d/webgl.html. * MotionMark/tests/bouncing-particles/bouncing-canvas-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-images.html. * MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html. * MotionMark/tests/bouncing-particles/bouncing-css-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-images.html. * MotionMark/tests/bouncing-particles/bouncing-css-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-shapes.html. * MotionMark/tests/bouncing-particles/bouncing-svg-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-images.html. * MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-shapes.html. * MotionMark/tests/bouncing-particles/bouncing-tagged-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-tagged-images.html. * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js. * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js. * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js. * MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-images.js. * MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js. * MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js. * MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js. * MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js. * MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js. * MotionMark/tests/bouncing-particles/resources/image1.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image1.jpg. * MotionMark/tests/bouncing-particles/resources/image2.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image2.jpg. * MotionMark/tests/bouncing-particles/resources/image3.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image3.jpg. * MotionMark/tests/bouncing-particles/resources/image4.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image4.jpg. * MotionMark/tests/bouncing-particles/resources/image5.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image5.jpg. * MotionMark/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/dom/compositing-transforms.html. * MotionMark/tests/dom/focus.html: Renamed from PerformanceTests/Animometer/tests/dom/focus.html. * MotionMark/tests/dom/leaves.html: Renamed from PerformanceTests/Animometer/tests/dom/leaves.html. * MotionMark/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/dom/particles.html. * MotionMark/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/compositing-transforms.js. * MotionMark/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/dom-particles.js. * MotionMark/tests/dom/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/focus.js. * MotionMark/tests/dom/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/leaves.js. * MotionMark/tests/master/canvas-stage.html: Renamed from PerformanceTests/Animometer/tests/master/canvas-stage.html. * MotionMark/tests/master/focus.html: Renamed from PerformanceTests/Animometer/tests/master/focus.html. * MotionMark/tests/master/image-data.html: Renamed from PerformanceTests/Animometer/tests/master/image-data.html. * MotionMark/tests/master/leaves.html: Renamed from PerformanceTests/Animometer/tests/master/leaves.html. * MotionMark/tests/master/multiply.html: Renamed from PerformanceTests/Animometer/tests/master/multiply.html. * MotionMark/tests/master/resources/canvas-stage.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-stage.js. * MotionMark/tests/master/resources/canvas-tests.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-tests.js. * MotionMark/tests/master/resources/compass.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/compass.svg. * MotionMark/tests/master/resources/compass100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/compass100.png. * MotionMark/tests/master/resources/console.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/console.svg. * MotionMark/tests/master/resources/console100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/console100.png. * MotionMark/tests/master/resources/contribute.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute.svg. * MotionMark/tests/master/resources/contribute100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute100.png. * MotionMark/tests/master/resources/debugger.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger.svg. * MotionMark/tests/master/resources/debugger100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger100.png. * MotionMark/tests/master/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/master/resources/focus.js. * MotionMark/tests/master/resources/image-data.js: Renamed from PerformanceTests/Animometer/tests/master/resources/image-data.js. * MotionMark/tests/master/resources/inspector.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector.svg. * MotionMark/tests/master/resources/inspector100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector100.png. * MotionMark/tests/master/resources/layout.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/layout.svg. * MotionMark/tests/master/resources/layout100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/layout100.png. * MotionMark/tests/master/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/master/resources/leaves.js. * MotionMark/tests/master/resources/multiply.js: Renamed from PerformanceTests/Animometer/tests/master/resources/multiply.js. * MotionMark/tests/master/resources/particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/particles.js. * MotionMark/tests/master/resources/performance.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/performance.svg. * MotionMark/tests/master/resources/performance100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/performance100.png. * MotionMark/tests/master/resources/script.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/script.svg. * MotionMark/tests/master/resources/script100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/script100.png. * MotionMark/tests/master/resources/shortcuts.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts.svg. * MotionMark/tests/master/resources/shortcuts100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts100.png. * MotionMark/tests/master/resources/standards.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/standards.svg. * MotionMark/tests/master/resources/standards100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/standards100.png. * MotionMark/tests/master/resources/storage.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/storage.svg. * MotionMark/tests/master/resources/storage100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/storage100.png. * MotionMark/tests/master/resources/styles.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/styles.svg. * MotionMark/tests/master/resources/styles100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/styles100.png. * MotionMark/tests/master/resources/svg-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/svg-particles.js. * MotionMark/tests/master/resources/text.js: Renamed from PerformanceTests/Animometer/tests/master/resources/text.js. * MotionMark/tests/master/resources/timeline.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline.svg. * MotionMark/tests/master/resources/timeline100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline100.png. * MotionMark/tests/master/svg-particles.html: Renamed from PerformanceTests/Animometer/tests/master/svg-particles.html. * MotionMark/tests/master/text.html: Renamed from PerformanceTests/Animometer/tests/master/text.html. * MotionMark/tests/resources/main.js: Renamed from PerformanceTests/Animometer/tests/resources/main.js. * MotionMark/tests/resources/math.js: Renamed from PerformanceTests/Animometer/tests/resources/math.js. * MotionMark/tests/resources/stage.css: Renamed from PerformanceTests/Animometer/tests/resources/stage.css. * MotionMark/tests/resources/star.svg: Renamed from PerformanceTests/Animometer/tests/resources/star.svg. * MotionMark/tests/resources/yin-yang.png: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.png. * MotionMark/tests/resources/yin-yang.svg: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.svg. * MotionMark/tests/simple/resources/simple-canvas-paths.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js. * MotionMark/tests/simple/resources/simple-canvas.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas.js. * MotionMark/tests/simple/resources/tiled-canvas-image.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/tiled-canvas-image.js. * MotionMark/tests/simple/simple-canvas-paths.html: Renamed from PerformanceTests/Animometer/tests/simple/simple-canvas-paths.html. * MotionMark/tests/simple/tiled-canvas-image.html: Renamed from PerformanceTests/Animometer/tests/simple/tiled-canvas-image.html. * MotionMark/tests/template/resources/template-canvas.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-canvas.js. * MotionMark/tests/template/resources/template-css.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-css.js. * MotionMark/tests/template/resources/template-svg.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-svg.js. * MotionMark/tests/template/template-canvas.html: Renamed from PerformanceTests/Animometer/tests/template/template-canvas.html. * MotionMark/tests/template/template-css.html: Renamed from PerformanceTests/Animometer/tests/template/template-css.html. * MotionMark/tests/template/template-svg.html: Renamed from PerformanceTests/Animometer/tests/template/template-svg.html. Canonical link: https://commits.webkit.org/183912@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210459 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 23:38:32 +00:00
<link rel="stylesheet" href="resources/runner/motionmark.css">
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
<script src="resources/strings.js" defer></script>
<script src="resources/extensions.js" defer></script>
<script src="resources/statistics.js" defer></script>
Improvements to Animometer benchmark https://bugs.webkit.org/show_bug.cgi?id=157738 Reviewed by Dean Jackson. Provisionally reviewed by Said Abou-Hallawa. Include confidence interval for the final score, and store the canvas size in the serialization so that it is accurately shown in results. * Animometer/developer.html: Add a "confidence" div. * Animometer/index.html: Ditto. Convert "mean" to "confidence". * Animometer/resources/debug-runner/animometer.js: Look at options, and if the configuration is included, update the body class based on it (similar to what we do when we first load the page). That way, if you drag-and-drop previous results in, that configuration is reflected in the dashboard. Show the full confidence interval. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/debug-runner/animometer.js: Style update. * Animometer/resources/runner/animometer.css: * Animometer/resources/runner/animometer.js: (_processData): Propagate the confidence interval values out and calculate the lower and upper bounds. For now, shortcut the aggregate calculation, since we only go through one iteration. (this._processData.calculateScore): Propagate the confidence interval out to be next to the score. Depending on the controller these values are calculated differently. (this._processData._getResultsProperty): Convenience function. (this._processData.get score): Refactor. (this._processData.get scoreLowerBound): Get the aggregate lower bound. (this._processData.get scoreUpperBound): Get the aggregate upper bound. (window.sectionsManager.setSectionScore): (window.benchmarkController._startBenchmark): When the benchmark starts, note the canvas size and add it to options. That way it will be automatically be serialized. (window.benchmarkController.showResults): Include the maximum deviation percentage. * Animometer/resources/runner/lines.svg: Make the background line up with the skew. * Animometer/resources/runner/tests.js: (Headers.details.text): Refactor. * Animometer/resources/statistics.js: (Statistics.largestDeviationPercentage): Convenience function to calculate the deviation percentage on either end and return the largest deviation. * Animometer/resources/strings.js: Allow specifying a regression profile to use instead of taking the one with the lowest error. Address an issue in the focus test when the regression calculated ends up overestimating the change point, causing a cascade of tougher ramps. The reason behind this is that at max complexity of an initial ramp, the frame length is very high, and it influences the second segment of the piecewise regression strongly, causing it to be very steep. As a result, the first segment, expected to be flat, ends up covering a higher range of complexity. That makes the change point much higher than it should be. To avoid this, we will add a sanity check on the maximum value of the ramp. If the regression's projected value at the maximum complexity of the current ramp is very slow (less than 20 fps), 1) reduce the maximum complexity by 20%, and 2) do not include the regression's change point in the change point estimator. That estimator is used as the midpoint of the next ramp, and including the change point from a poor regression can bake in the error. The controller already knows how to adjust for ramps that are too easy for the system. * Animometer/resources/runner/animometer.js: (this._processData.findRegression): Takes a preferred profile and gives that to Regression. (this._processData.calculateScore): With the ramp controller, take the profile of the ramp that was used the most when calculating the ramp's regression. That profile is what is used for the test's score. * Animometer/resources/statistics.js: (Regression.Utilities.createClass): Update to take an options object which can specify a profile to calculate with. Otherwise it will continue to use both and select the one with the lower error. (_calculateRegression): Fix an issue where we claim 0 error if the regression calculation fails due to divide-by-zero. Instead reject that regression calculation by giving it Number.MAX_VALUE. * Animometer/resources/strings.js: New strings for marking a regression as flat or slope. * Animometer/tests/resources/main.js: (RampController): Rename the thresholds for clarity. Add a threshold that, if exceeded, will lower the maximum complexity of the next ramp. (tune): Relax the cdf check to consider whether the interval definitely falls in the desired frame length threshold. (processSamples): Include the profile in the ramp. Update ramp controller test. Increase the length of the test to 30 seconds, and extend the interval to 120 ms during sampling. Improve the estimation of the ramp parameters. * Animometer/developer.html: Change default to 30 seconds, and don't show the progress bar by default. * Animometer/resources/runner/animometer.js: Change default to 30 seconds. * Animometer/tests/resources/main.js: A number of improvements to the ramp controller, in the order in which they appear in the patch: - With a longer test length use longer ramps with longer intervals to get more data at each complexity. Keep the 100 ms interval length during the ramp up phase since we don't need to spend more time there to find the right order of magnitude, but increase it during the ramps to 120 ms. - The ramp linearly interpolates the complexity to render based on its timestamp, but it would never sample the minimum complexity. Instead of lerping max to min complexity from time 0 to t where t is the ramp length, instead lerp from 0 to (t - intervalSampleLength) so that we can have at least one interval sample at the min complexity for that ramp. - Some regression calculations only come out with one line segment rather than the two we expect. This could be due to a noisy ramp or the ramp's range is too narrow. If that's the case, influence the minimum complexity of the next ramp towards the lowest bound of 1, so that we ensure that at least part of the ramp is covering a complexity range that the system can handle at full 60. - Remove an assignment to interpolatedFrameLength since that is never subsequently used. Update the format used to serialize the results for analysis. Each data point used to have named properties for fields like complexity and frame rate. In addition the serialized numbers had rounding errors that took up many characters. Update the format by introducing a new data container called SampleData, which contains a field map. The map maps a string to an array index. Each data point is an array, so, to get a stat, use the field map to get the array index into the data point. This allows future versions to track other data, and reduces the size of the output string by two-thirds. * Animometer/resources/extensions.js: (Utilities.toFixedNumber): Add convenience function that truncates the number to a fixed precision, and converts it back to a number. (SampleData): New class that contains sample data and a field map that maps properties to an array index. (get length): Number of data points. (addField): Add a field to the field map. (push): Add a data point. (sort): Sort the data. (slice): Return new SampleData object with sliced data. (forEach): Iterate over the data with provided function. (createDatum): (getFieldInDatum): Returns the data point associated with the field name by looking it up in the field map in the datum provided, which can be the datum object itself (an array) or an index into the data member variable. (setFieldInDatum): Sets the data point associated with the field name. (at): Returns the data point at the provided index. (toArray): Serializes the data where the field map serves as property names for each point. * Animometer/resources/debug-runner/graph.js: (updateGraphData): Remove unused _testData. Convert the data to the old array format for the graph to use, since the old format was much easier to work with when displaying the graphs. (onGraphTypeChanged): For some controllers, no alternative score or mean is provided. * Animometer/resources/runner/animometer.css: * Animometer/resources/runner/animometer.js: Refactor to use SampleData. Update JSON output to only go to 3 digits of precision for purposes of reducing the data size. * Animometer/resources/strings.js: Add new strings to put into the field maps. * Animometer/tests/resources/main.js: Refactor to use SampleData. * Animometer/developer.html: * Animometer/index.html: Restructure results table for both pages. Add charset attribute to tests.js include. * Animometer/resources/debug-runner/animometer.css: Clear out styles from release runner. * Animometer/resources/debug-runner/graph.js: (onGraphTypeChanged): Update score and mean if bootstrap results are available from the controller, since not all controllers do bootstrapping. * Animometer/resources/debug-runner/tests.js: Update header text. * Animometer/resources/runner/animometer.css: Include confidence interval in results. * Animometer/resources/runner/animometer.js: (ResultsTable._addHeader): Header contents can be HTML, so use innerHTML instead. (ResultsTable._addBody): Add tbody element. (ResultsTable._addTest): Allow a data cell to invoke a JS function to get its contents. (window.benchmarkController.showResults): Add table that includes tests' confidence intervals. * Animometer/resources/runner/tests.js: (Headers.details.text): Add new details table that includes bootstrap confidence interval. The interval can be asymmetric, but for simplicity, report the maximum deviation percentage on either side of the bootstrap median. * Animometer/resources/statistics.js: (bootstrap): Include the confidence percentage in the return object. Report canvas size in results. * Animometer/developer.html: Add markup to indicate whether a small, medium, or large canvas was used. * Animometer/index.html: Ditto. * Animometer/resources/debug-runner/animometer.js: Call determineCanvasSize(). * Animometer/resources/runner/animometer.css: Update styles to set the canvas based on the body class size. * Animometer/resources/runner/animometer.js: (window.benchmarkController.initialize): Update styles to set the canvas based on the body class size. (window.benchmarkController.determineCanvasSize): Run various media queries and set the body class based on the size of the device. * Animometer/developer.html: Refactor to include the main CSS file, and redo the layout so that it doesn't rely on flexbox. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/debug-runner/animometer.js: (updateDisplay): Since various parts of the script alter the body class, we can't replace the className directly. Instead, remove all display-based values and then add the one that was selected. * Animometer/resources/debug-runner/graph.js: (updateGraphData): To set the size of the graph, use window.innerHeight. * Animometer/resources/runner/animometer.js: (window.sectionsManager.showSection): Since various parts of the script alter the body class, we can't replace the className directly. Remove all of the section classes individually and then add the one desired. * Animometer/tests/resources/stage.css: Remove -apple-system as a font to use in the stage. Canonical link: https://commits.webkit.org/177081@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202314 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-22 03:11:15 +00:00
<script src="resources/runner/tests.js" charset="utf-8" defer></script>
Rename the directory and the files of MotionMark from Animometer to MotionMark https://bugs.webkit.org/show_bug.cgi?id=166659 Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-01-06 Reviewed by Jon Lee. Rename the directory and the files of the benchmark to its new name. * MotionMark/developer.html: Renamed from PerformanceTests/Animometer/developer.html. * MotionMark/index.html: Renamed from PerformanceTests/Animometer/index.html. * MotionMark/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/d3.min.js. * MotionMark/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/graph.js. * MotionMark/resources/debug-runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.css. * MotionMark/resources/debug-runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.js. * MotionMark/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/tests.js. * MotionMark/resources/extensions.js: Renamed from PerformanceTests/Animometer/resources/extensions.js. * MotionMark/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/runner/benchmark-runner.js. * MotionMark/resources/runner/crystal.svg: Renamed from PerformanceTests/Animometer/resources/runner/crystal.svg. * MotionMark/resources/runner/lines.svg: Renamed from PerformanceTests/Animometer/resources/runner/lines.svg. * MotionMark/resources/runner/logo.svg: Renamed from PerformanceTests/Animometer/resources/runner/logo.svg. * MotionMark/resources/runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/runner/animometer.css. * MotionMark/resources/runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/runner/animometer.js. * MotionMark/resources/runner/tests.js: Renamed from PerformanceTests/Animometer/resources/runner/tests.js. * MotionMark/resources/statistics.js: Renamed from PerformanceTests/Animometer/resources/statistics.js. * MotionMark/resources/strings.js: Renamed from PerformanceTests/Animometer/resources/strings.js. * MotionMark/tests/3d/resources/webgl.js: Renamed from PerformanceTests/Animometer/tests/3d/resources/webgl.js. * MotionMark/tests/3d/webgl.html: Renamed from PerformanceTests/Animometer/tests/3d/webgl.html. * MotionMark/tests/bouncing-particles/bouncing-canvas-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-images.html. * MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html. * MotionMark/tests/bouncing-particles/bouncing-css-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-images.html. * MotionMark/tests/bouncing-particles/bouncing-css-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-shapes.html. * MotionMark/tests/bouncing-particles/bouncing-svg-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-images.html. * MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-shapes.html. * MotionMark/tests/bouncing-particles/bouncing-tagged-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-tagged-images.html. * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js. * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js. * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js. * MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-images.js. * MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js. * MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js. * MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js. * MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js. * MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js. * MotionMark/tests/bouncing-particles/resources/image1.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image1.jpg. * MotionMark/tests/bouncing-particles/resources/image2.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image2.jpg. * MotionMark/tests/bouncing-particles/resources/image3.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image3.jpg. * MotionMark/tests/bouncing-particles/resources/image4.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image4.jpg. * MotionMark/tests/bouncing-particles/resources/image5.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image5.jpg. * MotionMark/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/dom/compositing-transforms.html. * MotionMark/tests/dom/focus.html: Renamed from PerformanceTests/Animometer/tests/dom/focus.html. * MotionMark/tests/dom/leaves.html: Renamed from PerformanceTests/Animometer/tests/dom/leaves.html. * MotionMark/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/dom/particles.html. * MotionMark/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/compositing-transforms.js. * MotionMark/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/dom-particles.js. * MotionMark/tests/dom/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/focus.js. * MotionMark/tests/dom/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/leaves.js. * MotionMark/tests/master/canvas-stage.html: Renamed from PerformanceTests/Animometer/tests/master/canvas-stage.html. * MotionMark/tests/master/focus.html: Renamed from PerformanceTests/Animometer/tests/master/focus.html. * MotionMark/tests/master/image-data.html: Renamed from PerformanceTests/Animometer/tests/master/image-data.html. * MotionMark/tests/master/leaves.html: Renamed from PerformanceTests/Animometer/tests/master/leaves.html. * MotionMark/tests/master/multiply.html: Renamed from PerformanceTests/Animometer/tests/master/multiply.html. * MotionMark/tests/master/resources/canvas-stage.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-stage.js. * MotionMark/tests/master/resources/canvas-tests.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-tests.js. * MotionMark/tests/master/resources/compass.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/compass.svg. * MotionMark/tests/master/resources/compass100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/compass100.png. * MotionMark/tests/master/resources/console.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/console.svg. * MotionMark/tests/master/resources/console100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/console100.png. * MotionMark/tests/master/resources/contribute.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute.svg. * MotionMark/tests/master/resources/contribute100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute100.png. * MotionMark/tests/master/resources/debugger.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger.svg. * MotionMark/tests/master/resources/debugger100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger100.png. * MotionMark/tests/master/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/master/resources/focus.js. * MotionMark/tests/master/resources/image-data.js: Renamed from PerformanceTests/Animometer/tests/master/resources/image-data.js. * MotionMark/tests/master/resources/inspector.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector.svg. * MotionMark/tests/master/resources/inspector100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector100.png. * MotionMark/tests/master/resources/layout.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/layout.svg. * MotionMark/tests/master/resources/layout100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/layout100.png. * MotionMark/tests/master/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/master/resources/leaves.js. * MotionMark/tests/master/resources/multiply.js: Renamed from PerformanceTests/Animometer/tests/master/resources/multiply.js. * MotionMark/tests/master/resources/particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/particles.js. * MotionMark/tests/master/resources/performance.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/performance.svg. * MotionMark/tests/master/resources/performance100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/performance100.png. * MotionMark/tests/master/resources/script.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/script.svg. * MotionMark/tests/master/resources/script100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/script100.png. * MotionMark/tests/master/resources/shortcuts.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts.svg. * MotionMark/tests/master/resources/shortcuts100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts100.png. * MotionMark/tests/master/resources/standards.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/standards.svg. * MotionMark/tests/master/resources/standards100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/standards100.png. * MotionMark/tests/master/resources/storage.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/storage.svg. * MotionMark/tests/master/resources/storage100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/storage100.png. * MotionMark/tests/master/resources/styles.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/styles.svg. * MotionMark/tests/master/resources/styles100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/styles100.png. * MotionMark/tests/master/resources/svg-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/svg-particles.js. * MotionMark/tests/master/resources/text.js: Renamed from PerformanceTests/Animometer/tests/master/resources/text.js. * MotionMark/tests/master/resources/timeline.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline.svg. * MotionMark/tests/master/resources/timeline100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline100.png. * MotionMark/tests/master/svg-particles.html: Renamed from PerformanceTests/Animometer/tests/master/svg-particles.html. * MotionMark/tests/master/text.html: Renamed from PerformanceTests/Animometer/tests/master/text.html. * MotionMark/tests/resources/main.js: Renamed from PerformanceTests/Animometer/tests/resources/main.js. * MotionMark/tests/resources/math.js: Renamed from PerformanceTests/Animometer/tests/resources/math.js. * MotionMark/tests/resources/stage.css: Renamed from PerformanceTests/Animometer/tests/resources/stage.css. * MotionMark/tests/resources/star.svg: Renamed from PerformanceTests/Animometer/tests/resources/star.svg. * MotionMark/tests/resources/yin-yang.png: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.png. * MotionMark/tests/resources/yin-yang.svg: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.svg. * MotionMark/tests/simple/resources/simple-canvas-paths.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js. * MotionMark/tests/simple/resources/simple-canvas.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas.js. * MotionMark/tests/simple/resources/tiled-canvas-image.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/tiled-canvas-image.js. * MotionMark/tests/simple/simple-canvas-paths.html: Renamed from PerformanceTests/Animometer/tests/simple/simple-canvas-paths.html. * MotionMark/tests/simple/tiled-canvas-image.html: Renamed from PerformanceTests/Animometer/tests/simple/tiled-canvas-image.html. * MotionMark/tests/template/resources/template-canvas.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-canvas.js. * MotionMark/tests/template/resources/template-css.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-css.js. * MotionMark/tests/template/resources/template-svg.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-svg.js. * MotionMark/tests/template/template-canvas.html: Renamed from PerformanceTests/Animometer/tests/template/template-canvas.html. * MotionMark/tests/template/template-css.html: Renamed from PerformanceTests/Animometer/tests/template/template-css.html. * MotionMark/tests/template/template-svg.html: Renamed from PerformanceTests/Animometer/tests/template/template-svg.html. Canonical link: https://commits.webkit.org/183912@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210459 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 23:38:32 +00:00
<script src="resources/runner/motionmark.js" defer></script>
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
<script src="resources/runner/benchmark-runner.js" defer></script>
<script>
window.addEventListener("load", function() {
// Start the fade in animation.
document.body.classList.add("images-loaded");
});
</script>
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
</head>
<body class="showing-intro">
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
<main>
<section id="intro" class="selected">
[MotionMark] Add support for version numbers https://bugs.webkit.org/show_bug.cgi?id=186479 Reviewed by Said Abou-Hallawa. Add support for displaying the version number as well as including it in the JSON results. When loading the front page, script replaces any element with classname version with the version number of the benchmark, which is stored in Strings.version. The JSON structure for the results includes a new version property: { "version": "1.0", "options": { ... }, "data": [ ... ] } When dragging a results file, the version listed will come from the JSON file. Older results will not have had the version property, in which case it will default to "1.0". * MotionMark/index.html: Update title to some other default. Script will update it. Include the version number in the logo title. * MotionMark/developer.html: Ditto. * MotionMark/about.html: Ditto. * MotionMark/resources/runner/motionmark.js: (ResultsDashboard): Update constructor to include version. This is used when serializing results out to JSON, and displaying the results panel in developer mode. (ResultsDashboard._processData): When running the benchmark, include benchmark version string in the results object. (ResultsDashboard.version): (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.sectionsManager.setSectionVersion): Helper function to update the element in the section with the class name version. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, which would be the same as the benchmark version. * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo in a div and include the version string. * MotionMark/resources/strings.js: Add strings for the page title template, and the version. * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/motionmark.js: (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. When dragging in JSON results, look for version to pass to the dashboard. If it doesn't exist, default to "1.0". (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, instead of the current benchmark version. * MotionMark/resources/debug-runner/tests.js: Update page title template. Canonical link: https://commits.webkit.org/202238@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233147 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-06-25 15:38:03 +00:00
<div class="logo">
<svg><use xlink:href="resources/runner/logo.svg#root" /></svg>
<div>version <span class="version"></span></div>
</div>
<div class="body">
Improvements to Animometer benchmark https://bugs.webkit.org/show_bug.cgi?id=157738 Reviewed by Dean Jackson. Provisionally reviewed by Said Abou-Hallawa. Include confidence interval for the final score, and store the canvas size in the serialization so that it is accurately shown in results. * Animometer/developer.html: Add a "confidence" div. * Animometer/index.html: Ditto. Convert "mean" to "confidence". * Animometer/resources/debug-runner/animometer.js: Look at options, and if the configuration is included, update the body class based on it (similar to what we do when we first load the page). That way, if you drag-and-drop previous results in, that configuration is reflected in the dashboard. Show the full confidence interval. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/debug-runner/animometer.js: Style update. * Animometer/resources/runner/animometer.css: * Animometer/resources/runner/animometer.js: (_processData): Propagate the confidence interval values out and calculate the lower and upper bounds. For now, shortcut the aggregate calculation, since we only go through one iteration. (this._processData.calculateScore): Propagate the confidence interval out to be next to the score. Depending on the controller these values are calculated differently. (this._processData._getResultsProperty): Convenience function. (this._processData.get score): Refactor. (this._processData.get scoreLowerBound): Get the aggregate lower bound. (this._processData.get scoreUpperBound): Get the aggregate upper bound. (window.sectionsManager.setSectionScore): (window.benchmarkController._startBenchmark): When the benchmark starts, note the canvas size and add it to options. That way it will be automatically be serialized. (window.benchmarkController.showResults): Include the maximum deviation percentage. * Animometer/resources/runner/lines.svg: Make the background line up with the skew. * Animometer/resources/runner/tests.js: (Headers.details.text): Refactor. * Animometer/resources/statistics.js: (Statistics.largestDeviationPercentage): Convenience function to calculate the deviation percentage on either end and return the largest deviation. * Animometer/resources/strings.js: Allow specifying a regression profile to use instead of taking the one with the lowest error. Address an issue in the focus test when the regression calculated ends up overestimating the change point, causing a cascade of tougher ramps. The reason behind this is that at max complexity of an initial ramp, the frame length is very high, and it influences the second segment of the piecewise regression strongly, causing it to be very steep. As a result, the first segment, expected to be flat, ends up covering a higher range of complexity. That makes the change point much higher than it should be. To avoid this, we will add a sanity check on the maximum value of the ramp. If the regression's projected value at the maximum complexity of the current ramp is very slow (less than 20 fps), 1) reduce the maximum complexity by 20%, and 2) do not include the regression's change point in the change point estimator. That estimator is used as the midpoint of the next ramp, and including the change point from a poor regression can bake in the error. The controller already knows how to adjust for ramps that are too easy for the system. * Animometer/resources/runner/animometer.js: (this._processData.findRegression): Takes a preferred profile and gives that to Regression. (this._processData.calculateScore): With the ramp controller, take the profile of the ramp that was used the most when calculating the ramp's regression. That profile is what is used for the test's score. * Animometer/resources/statistics.js: (Regression.Utilities.createClass): Update to take an options object which can specify a profile to calculate with. Otherwise it will continue to use both and select the one with the lower error. (_calculateRegression): Fix an issue where we claim 0 error if the regression calculation fails due to divide-by-zero. Instead reject that regression calculation by giving it Number.MAX_VALUE. * Animometer/resources/strings.js: New strings for marking a regression as flat or slope. * Animometer/tests/resources/main.js: (RampController): Rename the thresholds for clarity. Add a threshold that, if exceeded, will lower the maximum complexity of the next ramp. (tune): Relax the cdf check to consider whether the interval definitely falls in the desired frame length threshold. (processSamples): Include the profile in the ramp. Update ramp controller test. Increase the length of the test to 30 seconds, and extend the interval to 120 ms during sampling. Improve the estimation of the ramp parameters. * Animometer/developer.html: Change default to 30 seconds, and don't show the progress bar by default. * Animometer/resources/runner/animometer.js: Change default to 30 seconds. * Animometer/tests/resources/main.js: A number of improvements to the ramp controller, in the order in which they appear in the patch: - With a longer test length use longer ramps with longer intervals to get more data at each complexity. Keep the 100 ms interval length during the ramp up phase since we don't need to spend more time there to find the right order of magnitude, but increase it during the ramps to 120 ms. - The ramp linearly interpolates the complexity to render based on its timestamp, but it would never sample the minimum complexity. Instead of lerping max to min complexity from time 0 to t where t is the ramp length, instead lerp from 0 to (t - intervalSampleLength) so that we can have at least one interval sample at the min complexity for that ramp. - Some regression calculations only come out with one line segment rather than the two we expect. This could be due to a noisy ramp or the ramp's range is too narrow. If that's the case, influence the minimum complexity of the next ramp towards the lowest bound of 1, so that we ensure that at least part of the ramp is covering a complexity range that the system can handle at full 60. - Remove an assignment to interpolatedFrameLength since that is never subsequently used. Update the format used to serialize the results for analysis. Each data point used to have named properties for fields like complexity and frame rate. In addition the serialized numbers had rounding errors that took up many characters. Update the format by introducing a new data container called SampleData, which contains a field map. The map maps a string to an array index. Each data point is an array, so, to get a stat, use the field map to get the array index into the data point. This allows future versions to track other data, and reduces the size of the output string by two-thirds. * Animometer/resources/extensions.js: (Utilities.toFixedNumber): Add convenience function that truncates the number to a fixed precision, and converts it back to a number. (SampleData): New class that contains sample data and a field map that maps properties to an array index. (get length): Number of data points. (addField): Add a field to the field map. (push): Add a data point. (sort): Sort the data. (slice): Return new SampleData object with sliced data. (forEach): Iterate over the data with provided function. (createDatum): (getFieldInDatum): Returns the data point associated with the field name by looking it up in the field map in the datum provided, which can be the datum object itself (an array) or an index into the data member variable. (setFieldInDatum): Sets the data point associated with the field name. (at): Returns the data point at the provided index. (toArray): Serializes the data where the field map serves as property names for each point. * Animometer/resources/debug-runner/graph.js: (updateGraphData): Remove unused _testData. Convert the data to the old array format for the graph to use, since the old format was much easier to work with when displaying the graphs. (onGraphTypeChanged): For some controllers, no alternative score or mean is provided. * Animometer/resources/runner/animometer.css: * Animometer/resources/runner/animometer.js: Refactor to use SampleData. Update JSON output to only go to 3 digits of precision for purposes of reducing the data size. * Animometer/resources/strings.js: Add new strings to put into the field maps. * Animometer/tests/resources/main.js: Refactor to use SampleData. * Animometer/developer.html: * Animometer/index.html: Restructure results table for both pages. Add charset attribute to tests.js include. * Animometer/resources/debug-runner/animometer.css: Clear out styles from release runner. * Animometer/resources/debug-runner/graph.js: (onGraphTypeChanged): Update score and mean if bootstrap results are available from the controller, since not all controllers do bootstrapping. * Animometer/resources/debug-runner/tests.js: Update header text. * Animometer/resources/runner/animometer.css: Include confidence interval in results. * Animometer/resources/runner/animometer.js: (ResultsTable._addHeader): Header contents can be HTML, so use innerHTML instead. (ResultsTable._addBody): Add tbody element. (ResultsTable._addTest): Allow a data cell to invoke a JS function to get its contents. (window.benchmarkController.showResults): Add table that includes tests' confidence intervals. * Animometer/resources/runner/tests.js: (Headers.details.text): Add new details table that includes bootstrap confidence interval. The interval can be asymmetric, but for simplicity, report the maximum deviation percentage on either side of the bootstrap median. * Animometer/resources/statistics.js: (bootstrap): Include the confidence percentage in the return object. Report canvas size in results. * Animometer/developer.html: Add markup to indicate whether a small, medium, or large canvas was used. * Animometer/index.html: Ditto. * Animometer/resources/debug-runner/animometer.js: Call determineCanvasSize(). * Animometer/resources/runner/animometer.css: Update styles to set the canvas based on the body class size. * Animometer/resources/runner/animometer.js: (window.benchmarkController.initialize): Update styles to set the canvas based on the body class size. (window.benchmarkController.determineCanvasSize): Run various media queries and set the body class based on the size of the device. * Animometer/developer.html: Refactor to include the main CSS file, and redo the layout so that it doesn't rely on flexbox. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/debug-runner/animometer.js: (updateDisplay): Since various parts of the script alter the body class, we can't replace the className directly. Instead, remove all display-based values and then add the one that was selected. * Animometer/resources/debug-runner/graph.js: (updateGraphData): To set the size of the graph, use window.innerHeight. * Animometer/resources/runner/animometer.js: (window.sectionsManager.showSection): Since various parts of the script alter the body class, we can't replace the className directly. Remove all of the section classes individually and then add the one desired. * Animometer/tests/resources/stage.css: Remove -apple-system as a font to use in the stage. Canonical link: https://commits.webkit.org/177081@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202314 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-22 03:11:15 +00:00
<p>MotionMark is a graphics benchmark that measures a browsers capability to animate complex scenes at a target frame rate.</p>
<p><a href="about.html">More details</a> about the benchmark are available. Bigger scores are better.</p>
<p>For accurate results, please take your browser window full screen, or rotate your device to landscape orientation.</p>
<p class="portrait-orientation-check"><b>Please rotate your device.</b></p>
<button class="landscape-orientation-check" onclick="benchmarkController.startBenchmark()">Run Benchmark</button>
Make the benchmark require device to be in landscape orientation https://bugs.webkit.org/show_bug.cgi?id=155822 rdar://problem/25258650 Reviewed by Ryosuke Niwa. Check that the device is in landscape orientation. If not, disable the button to start it, and show a warning message. * Animometer/developer.html: Add a message about how the browser should be set up. Include a warning message that appears if the orientation is incorrect on mobile devices. * Animometer/index.html: Ditto. * Animometer/resources/debug-runner/animometer.css: Migrate the .hidden rule into the release stylesheet. Update the style to accommodate the new UI. * Animometer/resources/runner/animometer.css: * Animometer/resources/runner/animometer.js: (window.benchmarkController.initialize): Add the orientation listener is needed. (window.benchmarkController.addOrientationListenerIfNecessary): Only mobile devices need this. Check to see for support of window.orientation. (window.benchmarkController._orientationChanged): Toggle the warning based on whether we match the landscape query. Set a state variable, which is needed for the debug harness. Call updateStartButtonState. (window.benchmarkController.updateStartButtonState): * Animometer/resources/debug-runner/animometer.js: Change _updateStartButtonState to return a boolean about whether at least one test is selected. That will be used in benchmarkController.updateStartButtonState(). Move the load event listener to the release version. (window.benchmarkController.updateStartButtonState): Override the release version, and also check that at least one test is selected. Canonical link: https://commits.webkit.org/173925@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@198610 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-03-24 02:08:13 +00:00
</div>
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
</section>
<section id="test-container" class="frame-container"></section>
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
<section id="results">
[MotionMark] Add support for version numbers https://bugs.webkit.org/show_bug.cgi?id=186479 Reviewed by Said Abou-Hallawa. Add support for displaying the version number as well as including it in the JSON results. When loading the front page, script replaces any element with classname version with the version number of the benchmark, which is stored in Strings.version. The JSON structure for the results includes a new version property: { "version": "1.0", "options": { ... }, "data": [ ... ] } When dragging a results file, the version listed will come from the JSON file. Older results will not have had the version property, in which case it will default to "1.0". * MotionMark/index.html: Update title to some other default. Script will update it. Include the version number in the logo title. * MotionMark/developer.html: Ditto. * MotionMark/about.html: Ditto. * MotionMark/resources/runner/motionmark.js: (ResultsDashboard): Update constructor to include version. This is used when serializing results out to JSON, and displaying the results panel in developer mode. (ResultsDashboard._processData): When running the benchmark, include benchmark version string in the results object. (ResultsDashboard.version): (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.sectionsManager.setSectionVersion): Helper function to update the element in the section with the class name version. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, which would be the same as the benchmark version. * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo in a div and include the version string. * MotionMark/resources/strings.js: Add strings for the page title template, and the version. * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/motionmark.js: (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. When dragging in JSON results, look for version to pass to the dashboard. If it doesn't exist, default to "1.0". (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, instead of the current benchmark version. * MotionMark/resources/debug-runner/tests.js: Update page title template. Canonical link: https://commits.webkit.org/202238@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233147 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-06-25 15:38:03 +00:00
<div class="logo">
<svg><use xlink:href="resources/runner/logo.svg#root" /></svg>
<div>version <span class="version"></span></div>
</div>
<div class="body">
Improvements to Animometer benchmark https://bugs.webkit.org/show_bug.cgi?id=157738 Reviewed by Dean Jackson. Provisionally reviewed by Said Abou-Hallawa. Include confidence interval for the final score, and store the canvas size in the serialization so that it is accurately shown in results. * Animometer/developer.html: Add a "confidence" div. * Animometer/index.html: Ditto. Convert "mean" to "confidence". * Animometer/resources/debug-runner/animometer.js: Look at options, and if the configuration is included, update the body class based on it (similar to what we do when we first load the page). That way, if you drag-and-drop previous results in, that configuration is reflected in the dashboard. Show the full confidence interval. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/debug-runner/animometer.js: Style update. * Animometer/resources/runner/animometer.css: * Animometer/resources/runner/animometer.js: (_processData): Propagate the confidence interval values out and calculate the lower and upper bounds. For now, shortcut the aggregate calculation, since we only go through one iteration. (this._processData.calculateScore): Propagate the confidence interval out to be next to the score. Depending on the controller these values are calculated differently. (this._processData._getResultsProperty): Convenience function. (this._processData.get score): Refactor. (this._processData.get scoreLowerBound): Get the aggregate lower bound. (this._processData.get scoreUpperBound): Get the aggregate upper bound. (window.sectionsManager.setSectionScore): (window.benchmarkController._startBenchmark): When the benchmark starts, note the canvas size and add it to options. That way it will be automatically be serialized. (window.benchmarkController.showResults): Include the maximum deviation percentage. * Animometer/resources/runner/lines.svg: Make the background line up with the skew. * Animometer/resources/runner/tests.js: (Headers.details.text): Refactor. * Animometer/resources/statistics.js: (Statistics.largestDeviationPercentage): Convenience function to calculate the deviation percentage on either end and return the largest deviation. * Animometer/resources/strings.js: Allow specifying a regression profile to use instead of taking the one with the lowest error. Address an issue in the focus test when the regression calculated ends up overestimating the change point, causing a cascade of tougher ramps. The reason behind this is that at max complexity of an initial ramp, the frame length is very high, and it influences the second segment of the piecewise regression strongly, causing it to be very steep. As a result, the first segment, expected to be flat, ends up covering a higher range of complexity. That makes the change point much higher than it should be. To avoid this, we will add a sanity check on the maximum value of the ramp. If the regression's projected value at the maximum complexity of the current ramp is very slow (less than 20 fps), 1) reduce the maximum complexity by 20%, and 2) do not include the regression's change point in the change point estimator. That estimator is used as the midpoint of the next ramp, and including the change point from a poor regression can bake in the error. The controller already knows how to adjust for ramps that are too easy for the system. * Animometer/resources/runner/animometer.js: (this._processData.findRegression): Takes a preferred profile and gives that to Regression. (this._processData.calculateScore): With the ramp controller, take the profile of the ramp that was used the most when calculating the ramp's regression. That profile is what is used for the test's score. * Animometer/resources/statistics.js: (Regression.Utilities.createClass): Update to take an options object which can specify a profile to calculate with. Otherwise it will continue to use both and select the one with the lower error. (_calculateRegression): Fix an issue where we claim 0 error if the regression calculation fails due to divide-by-zero. Instead reject that regression calculation by giving it Number.MAX_VALUE. * Animometer/resources/strings.js: New strings for marking a regression as flat or slope. * Animometer/tests/resources/main.js: (RampController): Rename the thresholds for clarity. Add a threshold that, if exceeded, will lower the maximum complexity of the next ramp. (tune): Relax the cdf check to consider whether the interval definitely falls in the desired frame length threshold. (processSamples): Include the profile in the ramp. Update ramp controller test. Increase the length of the test to 30 seconds, and extend the interval to 120 ms during sampling. Improve the estimation of the ramp parameters. * Animometer/developer.html: Change default to 30 seconds, and don't show the progress bar by default. * Animometer/resources/runner/animometer.js: Change default to 30 seconds. * Animometer/tests/resources/main.js: A number of improvements to the ramp controller, in the order in which they appear in the patch: - With a longer test length use longer ramps with longer intervals to get more data at each complexity. Keep the 100 ms interval length during the ramp up phase since we don't need to spend more time there to find the right order of magnitude, but increase it during the ramps to 120 ms. - The ramp linearly interpolates the complexity to render based on its timestamp, but it would never sample the minimum complexity. Instead of lerping max to min complexity from time 0 to t where t is the ramp length, instead lerp from 0 to (t - intervalSampleLength) so that we can have at least one interval sample at the min complexity for that ramp. - Some regression calculations only come out with one line segment rather than the two we expect. This could be due to a noisy ramp or the ramp's range is too narrow. If that's the case, influence the minimum complexity of the next ramp towards the lowest bound of 1, so that we ensure that at least part of the ramp is covering a complexity range that the system can handle at full 60. - Remove an assignment to interpolatedFrameLength since that is never subsequently used. Update the format used to serialize the results for analysis. Each data point used to have named properties for fields like complexity and frame rate. In addition the serialized numbers had rounding errors that took up many characters. Update the format by introducing a new data container called SampleData, which contains a field map. The map maps a string to an array index. Each data point is an array, so, to get a stat, use the field map to get the array index into the data point. This allows future versions to track other data, and reduces the size of the output string by two-thirds. * Animometer/resources/extensions.js: (Utilities.toFixedNumber): Add convenience function that truncates the number to a fixed precision, and converts it back to a number. (SampleData): New class that contains sample data and a field map that maps properties to an array index. (get length): Number of data points. (addField): Add a field to the field map. (push): Add a data point. (sort): Sort the data. (slice): Return new SampleData object with sliced data. (forEach): Iterate over the data with provided function. (createDatum): (getFieldInDatum): Returns the data point associated with the field name by looking it up in the field map in the datum provided, which can be the datum object itself (an array) or an index into the data member variable. (setFieldInDatum): Sets the data point associated with the field name. (at): Returns the data point at the provided index. (toArray): Serializes the data where the field map serves as property names for each point. * Animometer/resources/debug-runner/graph.js: (updateGraphData): Remove unused _testData. Convert the data to the old array format for the graph to use, since the old format was much easier to work with when displaying the graphs. (onGraphTypeChanged): For some controllers, no alternative score or mean is provided. * Animometer/resources/runner/animometer.css: * Animometer/resources/runner/animometer.js: Refactor to use SampleData. Update JSON output to only go to 3 digits of precision for purposes of reducing the data size. * Animometer/resources/strings.js: Add new strings to put into the field maps. * Animometer/tests/resources/main.js: Refactor to use SampleData. * Animometer/developer.html: * Animometer/index.html: Restructure results table for both pages. Add charset attribute to tests.js include. * Animometer/resources/debug-runner/animometer.css: Clear out styles from release runner. * Animometer/resources/debug-runner/graph.js: (onGraphTypeChanged): Update score and mean if bootstrap results are available from the controller, since not all controllers do bootstrapping. * Animometer/resources/debug-runner/tests.js: Update header text. * Animometer/resources/runner/animometer.css: Include confidence interval in results. * Animometer/resources/runner/animometer.js: (ResultsTable._addHeader): Header contents can be HTML, so use innerHTML instead. (ResultsTable._addBody): Add tbody element. (ResultsTable._addTest): Allow a data cell to invoke a JS function to get its contents. (window.benchmarkController.showResults): Add table that includes tests' confidence intervals. * Animometer/resources/runner/tests.js: (Headers.details.text): Add new details table that includes bootstrap confidence interval. The interval can be asymmetric, but for simplicity, report the maximum deviation percentage on either side of the bootstrap median. * Animometer/resources/statistics.js: (bootstrap): Include the confidence percentage in the return object. Report canvas size in results. * Animometer/developer.html: Add markup to indicate whether a small, medium, or large canvas was used. * Animometer/index.html: Ditto. * Animometer/resources/debug-runner/animometer.js: Call determineCanvasSize(). * Animometer/resources/runner/animometer.css: Update styles to set the canvas based on the body class size. * Animometer/resources/runner/animometer.js: (window.benchmarkController.initialize): Update styles to set the canvas based on the body class size. (window.benchmarkController.determineCanvasSize): Run various media queries and set the body class based on the size of the device. * Animometer/developer.html: Refactor to include the main CSS file, and redo the layout so that it doesn't rely on flexbox. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/debug-runner/animometer.js: (updateDisplay): Since various parts of the script alter the body class, we can't replace the className directly. Instead, remove all display-based values and then add the one that was selected. * Animometer/resources/debug-runner/graph.js: (updateGraphData): To set the size of the graph, use window.innerHeight. * Animometer/resources/runner/animometer.js: (window.sectionsManager.showSection): Since various parts of the script alter the body class, we can't replace the className directly. Remove all of the section classes individually and then add the one desired. * Animometer/tests/resources/stage.css: Remove -apple-system as a font to use in the stage. Canonical link: https://commits.webkit.org/177081@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202314 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-22 03:11:15 +00:00
<div class="score-container">
<div class="score"></div>
<div class="confidence"></div>
<div class="detail">
<span class="small">on a small screen (phone)</span>
<span class="medium">on a medium screen (laptop, tablet)</span>
<span class="large">on a large screen (desktop)</span>
</div>
</div>
<div class="table-container">
<div>
<table id="results-score"></table>
<table id="results-data"></table>
</div>
<table id="results-header"></table>
</div>
Update Animometer to accommodate different screens https://bugs.webkit.org/show_bug.cgi?id=156449 Reviewed by Darin Adler. Provisionally reviewed by Said Abou-Hallawa. * Animometer/index.html: Wrap button in a container to add padding at the bottom. * Animometer/resources/debug-runner/animometer.css: (@media screen and (min-device-width: 1800px)): Deleted. (@media screen and (min-width: 1800px)): Cannot use min-device-width since it may match incorrectly. (screen and (max-device-height: 414px) and (orientation: landscape)): Some devices swap device width and height with orientation change. * Animometer/resources/runner/animometer.css: Similar. (screen and (min-device-width: 1024px) and (orientation: landscape)): (screen and (max-device-height: 414px) and (orientation: landscape)): (.frame-container): On smaller iPhones, adding 1px prevents the navigation bars from appearing. (@media screen and (min-device-width: 768px) and (max-device-width: 1024px)): Deleted. (@media (min-device-height: 768px) and (max-device-height: 1024px)): Target iPad Airs and similar. (@media screen and (min-device-width: 1024px) and (max-device-width: 1366px)): Deleted. (@media screen and (max-device-width: 1024px) and (min-device-height: 1366px)): Target iPad Pro. (#results footer): Add padding below the button for testing again. * Animometer/tests/master/multiply.html: Remove the center text. * Animometer/tests/master/resources/text.js: Update the test so that in every frame the text moves. * Animometer/tests/master/text.html: Update the text sizing depending on the size of the device. Canonical link: https://commits.webkit.org/174583@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@199328 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-04-12 02:12:23 +00:00
<button onclick="benchmarkController.startBenchmark()">Test Again</button>
</div>
Split benchmark into two different pages https://bugs.webkit.org/show_bug.cgi?id=152458 Reviewed by Simon Fraser. Address comments. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the sampler goes away, and a later call to get the JSON data is no longer available. Process the data right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData. * Animometer/resources/extensions.js: (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause. (Array.prototype.find.Array.prototype.find): Update the null check. (ResultsDashboard.prototype._processData): Use the already-processed data. * Animometer/resources/runner/animometer.css: (.frame-container > iframe): Remove calc(). Move Array functions to extensions.js since that is included by the harness. Add ES6 Array polyfills. * Animometer/resources/algorithm.js: (Array.prototype.swap): Moved to extensions.js. * Animometer/resources/extensions.js: (Array.prototype.swap): (Array.prototype.fill): Added. (Array.prototype.find): Added. Adjust styles for iPad. * Animometer/resources/runner/animometer.css: (@media screen and (min-device-width: 768px)): Apply to iPad as well. (@media screen and (max-device-width: 1024px)): Update width for iPads. Adjustment styles for iOS. * Animometer/developer.html: Different divs contain the iframe, so use a class instead and update the style rules. * Animometer/index.html: * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules. (@media screen and (min-device-width: 1800px)): Move this up. * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS. Get rid of prefixed flex properties for now. * Animometer/resources/debug-runner/animometer.css: * Animometer/resources/runner/animometer.css: Update the structure of the harness. Remove the JSON-per-test but keep the JSON of the whole test run. Use the full page in order to display the graph. * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score, average, and worst 5% statistics. * Animometer/index.html: Make structure similar to developer.html. * Animometer/resources/debug-runner/animometer.css: Remove most of the button rules since they are superfluous. Move the progress bar to the top, fixed. Update the results page rules. * Animometer/resources/debug-runner/animometer.js: Remove most of the additions to sectionsManager since they are no longer needed. (setSectionHeader): Updates header of the section. (window.suitesManager._updateStartButtonState): Update selector. (showResults): Add keypress event for selecting different data for copy/paste. Update how the results are populated. Include full test JSON in a textarea, rather than requiring a button press. (showTestGraph): * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their title, and the text used as the cell contents, including class name. * Animometer/resources/extensions.js: (ResultsTable): Update to include a flattened version of the headers, used while populating table contents. Remove unneeded helper functions for creating the table. Rename "show" to "add". * Animometer/resources/runner/animometer.css: Update rules to accommodate the new structure. * Animometer/resources/runner/animometer.js: (window.sectionsManager.setSectionScore): Helper function to set the score and mean for a section. (window.sectionsManager.populateTable): Helper function to set the table. (window.benchmarkController.showResults): Refactor. (window.benchmarkController.selectResults): Update selectors. * Animometer/resources/runner/tests.js: Set Headers. Debug harness extends it. Update debug runner to have similar names to the basic runner. Include that page's CSS and remove extraneous CSS rules. Get rid of the statistics table #record. * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr. * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected. * Animometer/resources/debug-runner/animometer.js: Remove recordTable. (window.suitesManager._updateStartButtonState): Update selector to #intro. (setupRunningSectionStyle): Deleted. * Animometer/resources/runner/animometer.css: (#test-container.selected): Change to flex-box only when visible. Remove recordTable. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._runTestAndRecordResults): * Animometer/resources/runner/tests.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: * Animometer/tests/examples/resources/canvas-electrons.js: * Animometer/tests/examples/resources/canvas-stars.js: * Animometer/tests/misc/resources/compositing-transforms.js: * Animometer/tests/resources/main.js: * Animometer/tests/resources/stage.js: (StageBenchmark): Remove _recordTable. * Animometer/tests/simple/resources/simple-canvas-paths.js: * Animometer/tests/simple/resources/simple-canvas.js: * Animometer/tests/template/resources/template-canvas.js: * Animometer/tests/template/resources/template-css.js: * Animometer/tests/template/resources/template-svg.js: * Animometer/tests/text/resources/layering-text.js: * Animometer/resources/debug-runner/animometer.js: (willStartFirstIteration): Fix selector, since results-table is used in multiple places, so it cannot be an id. Make it possible to select the scores, or the whole table data, by cycling through different selections through key press of 's'. * Animometer/resources/runner/animometer.js: (window.benchmarkController.showResults): Attach a keypress handler if it hasn't been added already. (window.benchmarkController.selectResults): * Animometer/resources/runner/tests.js: Cycle through different ranges. Fix a few fly-by errors. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path since the files are now in the top directory instead of inside runner/. (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function. (BenchmarkRunner.prototype.step): Member variable is never used. A little stylistic cleanup. * Animometer/resources/debug-runner/benchmark-runner.js: * Animometer/resources/extensions.js: (window.DocumentExtension.createElement): * Animometer/tests/resources/main.js: (Benchmark.prototype.record): * Animometer/tests/resources/stage.js: (StageBenchmark.prototype.showResults): Reverse progress and message. The message appears less frequently than the progress. * Animometer/tests/simple/resources/simple-canvas.js: (SimpleCanvasBenchmark): Remove unused options. Add newer version of harness in a new page. Consolidate differences between the two pages. * Animometer/developer.html: Include runner/animometer.js. Rename the JS function to run the benchmark to startBenchmark() instead of startTest(). Rename #running to #test-container. * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container. * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px) instead of 4:3. Split out benchmarkRunnerClient and benchmarkController. * Animometer/resources/debug-runner/animometer.js: Move needed functions out of benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable and move populating the results table into benchmarkController. Rename _resultsDashboard to results and make it accessible for other objects to use. (willAddTestFrame): This is unnecessary. Remove. (window.sectionsManager.showScore): Grab it from the results object instead of benchmarkRunnerClient. (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js. (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark. (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark. (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration() here. * Animometer/resources/debug-runner/benchmark-runner.js: (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame. * Animometer/resources/extensions.js: (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data for later referencing. (ResultsDashboard.prototype.toJSON): Deleted. (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really outputting JSON. Store the processed data into a member variable that can be referenced later. (ResultsDashboard.prototype.get data): Process the data if it hasn't already. (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the aggregate score. (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the need for an empty children array. This was to allow for a header row in the table that spanned multiple columns. In the simpler harness, this is not needed. (ResultsTable.prototype._showEmptyCells): (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score, which is the bare minimum needed for the simpler harness, key off of the header name provided. * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are split into the data and the headers, and are also displayed RTL so that a later patch allows a user to copy-paste the data easily. * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient. The debug harness will extend these classes. (window.benchmarkController._startBenchmark): Used by both harnesses. (window.benchmarkController.startBenchmark): Set hard-coded options. (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration() here. Get rid of utilities.js. Move it all into extensions.js. * Animometer/resources/extensions.js: * Animometer/tests/resources/utilities.js: Removed. * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link. * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto. * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto. * Animometer/tests/examples/canvas-electrons.html: Ditto. * Animometer/tests/examples/canvas-stars.html: Ditto. * Animometer/tests/misc/compositing-transforms.html: Ditto. * Animometer/tests/simple/simple-canvas-paths.html: Ditto. * Animometer/tests/template/template-canvas.html: Ditto. * Animometer/tests/template/template-css.html: Ditto. * Animometer/tests/template/template-svg.html: Ditto. * Animometer/tests/text/layering-text.html: Ditto. Split tests.js into two. Add a new suite to runner/tests.js. * Animometer/developer.html: Update the script order. Scripts from debug-runner/ will always build on those from runner/, and have the same name. * Animometer/resources/debug-runner/tests.js: Move "complex examples" suite into "miscellaneous tests". (Suite): Deleted. (Suite.prototype.prepare): Deleted. (Suite.prototype.run): Deleted. (suiteFromName): Deleted. * Animometer/resources/runner/tests.js: Added. Take definitions and functions needed by the test harness. Leave the test suites behind. (Suite): Moved from debug script. (Suite.prototype.prepare): Ditto. (Suite.prototype.run): Ditto. (suiteFromName): Ditto. (testFromName): Ditto. Move benchmark resources out into resources/debug-runner, and update URLs. * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html. * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css. * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js. * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js. * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js. * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js. * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js. Canonical link: https://commits.webkit.org/170645@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-12-24 01:31:47 +00:00
</section>
</main>
</body>
</html>