1 2015-11-16 Said Abou-Hallawa <sabouhallawa@apple.com>
3 Remove the option for animating using setInterval from the graphics benchmark
4 https://bugs.webkit.org/show_bug.cgi?id=151283
6 Reviewed by Darin Adler.
8 Get rid of the option to run animation using setInterval().
10 * Animometer/tests/resources/main.js:
11 (Animator.prototype.animate):
13 (Benchmark.prototype.start):
14 (Animator.prototype.start): Deleted.
16 2015-11-16 Said Abou-Hallawa <sabouhallawa@apple.com>
18 Highlight the alarming test results in the graphics benchmark results page
19 https://bugs.webkit.org/show_bug.cgi?id=151286
21 Reviewed by Simon Fraser.
23 When showing the results of a test in the graphics benchmark the following
24 criteria is going to be applied:
26 1. If the standard deviation of the test complexity or the frame rate is
27 equal to or more than 10%, the standard deviation and the test name
28 will be displayed in red.
29 2. If the average frame rate is not in the range = [(desired_frame_rate - 2)
30 .. (desired_frame_rate + 2)], the average frame rate and the test name will
33 * Animometer/resources/extensions.js:
34 (ResultsTable.prototype._showHeaderRow):
35 (ResultsTable.prototype._showHeader):
36 (ResultsTable.prototype._showEmptyCell):
37 (ResultsTable.prototype._showText):
38 (ResultsTable.prototype._showFixedNumber):
39 (ResultsTable.prototype.):
40 (ResultsTable.prototype._showGraph):
41 (ResultsTable.prototype._showJSON):
42 (ResultsTable.prototype._isAlarmingMeasurement):
43 (ResultsTable.prototype._isAlarmingTestResults):
44 (ResultsTable.prototype._showEmptyCells):
45 (ResultsTable.prototype._showEmptyRow):
46 (ResultsTable.prototype._showTest):
47 (ResultsTable.prototype._showSuite):
48 (ResultsTable.prototype._showIteration):
49 (ResultsTable.prototype.showRecord):
50 (ResultsTable.prototype.showIterations):
51 (ResultsTable.prototype._showEmpty): Deleted.
52 * Animometer/runner/resources/animometer.js:
53 (window.benchmarkRunnerClient.didFinishLastIteration):
54 * Animometer/tests/resources/stage.js:
55 (StageBenchmark.prototype.showResults):
57 2015-11-16 Said Abou-Hallawa <sabouhallawa@apple.com>
59 Clean referencing the options object in the graphics benchmark
60 https://bugs.webkit.org/show_bug.cgi?id=151284
62 Reviewed by Simon Fraser.
64 Get rid of the Benchmark.options member and rely only on the private member
65 Benchmark._options. The animator need to have its own options member instead
66 of accessing it from its reference to Benchmark object.
68 * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
69 (BouncingCanvasParticlesAnimator):
70 (BouncingCanvasParticlesBenchmark.prototype.createAnimator):
71 * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
72 (BouncingParticle.prototype.animate):
73 (BouncingParticlesAnimator):
74 (BouncingParticlesBenchmark.prototype.createAnimator):
75 * Animometer/tests/examples/resources/canvas-electrons.js:
76 (CanvasElectronsStage.prototype.animate):
77 (CanvasElectronsAnimator):
78 (CanvasElectronsBenchmark.prototype.createAnimator):
79 (window.benchmarkClient.create):
80 * Animometer/tests/examples/resources/canvas-stars.js:
81 (CanvasStarsStage.prototype.animate):
82 (CanvasStarsAnimator):
83 (CanvasStarsBenchmark.prototype.createAnimator):
84 (window.benchmarkClient.create):
85 * Animometer/tests/resources/main.js:
86 (BenchmarkState.prototype.currentProgress):
88 (Animator.prototype.animate):
90 (Benchmark.prototype.update):
91 * Animometer/tests/resources/stage.js:
92 (Stage.prototype.clear):
94 (StageBenchmark.prototype.createAnimator):
95 (StageBenchmark.prototype.tune):
96 (StageBenchmark.prototype.showResults):
97 * Animometer/tests/simple/resources/simple-canvas.js:
98 (SimpleCanvasStage.prototype.animate):
99 (SimpleCanvasAnimator):
100 (SimpleCanvasAnimator.prototype.animate):
101 (SimpleCanvasBenchmark.prototype.createAnimator):
102 * Animometer/tests/template/resources/template-canvas.js:
103 (TemplateCanvasStage.prototype.animate):
104 (TemplateCanvasBenchmark.prototype.createAnimator):
105 (window.benchmarkClient.create):
107 2015-11-13 Said Abou-Hallawa <sabouhallawa@apple.com>
109 Eliminate a request for layout every time an item is added to the stage of the graphics benchmark
110 https://bugs.webkit.org/show_bug.cgi?id=151289
112 Reviewed by Simon Fraser.
114 Cache the stage size when it is created instead of requesting every time
115 an object is added via clientWidth and clientHeight.
117 * Animometer/resources/extensions.js:
118 (Insets.elementPadding):
119 * Animometer/tests/resources/stage.js:
121 (Stage.prototype.get size):
123 2015-11-06 Said Abou-Hallawa <sabouhallawa@apple.com>
125 Initialize the graphics benchmark's Kalman filter with estimated 60 FPS
126 https://bugs.webkit.org/show_bug.cgi?id=150965
128 Reviewed by Darin Adler.
130 This should give the benchmark more accurate reading at warmup time. And
131 hence we can safely reduce the test running time to be 10 seconds.
133 * Animometer/runner/animometer.html:
134 Add "defer" back when loading resources/animometer.js since this script
135 depends on many other scripts and we need to wait till the page is parsed.
136 Also change the default test interval to be 10 seconds.
138 * Animometer/runner/resources/graph.js:
139 (graph): Make the test results curves smoother.
141 * Animometer/tests/resources/main.js:
142 (Animator): Initialize the Kalman filter with 60 FPS which should be true
143 if the test page is empty.
145 (Animator.prototype.animate):
146 * Animometer/tests/resources/math.js:
147 (KalmanEstimator): Fix the initial value of _vecX_est.
148 _vecX_est[0] = current FPS (= 60FPS when the test page is empty)
149 _vecX_est[1] = first time derivative of FPS (=0; FPS has been constant).
150 _vecX_est[2] = second time derivative of FPS (=0; since _vecX_est[1]=0).
151 (KalmanEstimator.prototype.estimate): Add some comments.
153 2015-11-04 Said Abou-Hallawa <sabouhallawa@apple.com>
155 Remove "defer" from the scripts' references in the graphics benchmark home page
156 https://bugs.webkit.org/show_bug.cgi?id=150915
158 Reviewed by Simon Fraser.
160 It causes the benchmark to be very flakey.
162 * Animometer/runner/animometer.html:
164 2015-11-01 Said Abou-Hallawa <sabouhallawa@apple,com>
166 Add an option to make the graphics benchmark runs a specific test with fixed complexity
167 https://bugs.webkit.org/show_bug.cgi?id=150529
169 Reviewed by Darin Adler.
171 Beside each test in the suites tree, we are going to show the complexity
172 arithmetic mean of the of the last run in an edit control. Based on a
173 new option these edit controls will all be visible or hidden. If they are
174 visible their values can be changed. The benchmark runner if it run in
175 the non-adaptive mode will set the complexity of the test to the passed
176 value and will not change it ever. The animator will animate the test and
177 frame rate will also be measured.
179 * Animometer/runner/animometer.html: Add a new option for the non-adaptive mode.
181 * Animometer/runner/resources/animometer.css:
182 (section#home input[type="number"]): Define the width of all the edit control in the <home> section.
183 (section#home > suites input[type="number"]): The edit controls in the <suites> box will be right aligned and hidden by default.
184 (section#home > suites input[type="number"].selected): When the class "selected" is added, the edit controls will be visible.
185 (section#home > options > label > input[type="number"]): Deleted.
187 * Animometer/runner/resources/animometer.js:
188 (window.benchmarkRunnerClient.didFinishLastIteration): Update the local storage with the results of each test.
189 (window.optionsManager._adaptiveTestElement): Returns the checkbox for setting the adaptive test option.
190 (window.suitesManager._editElement): Returns the edit element associated with each test element in the suites tree.
191 (window.suitesManager._editsElements): Returns a list of all the elements in the <suites> box.
192 (window.suitesManager._localStorageNameForTest): Change this function to take strings.
193 (window.suitesManager._createTestElement): Adds an edit control beside each test.
194 (window.suitesManager.updateEditsElementsState): Adds/Removes the 'selected' class to/from all the tests edit elements.
195 (window.suitesManager.updateUIFromLocalStorage): Reads the edit control value from the local storage.
196 (window.suitesManager.updateLocalStorageFromUI): Saves the edit control value to the local storage.
197 (window.suitesManager.updateLocalStorageFromJSON): Saves the last run results to the local storage.
198 (window.benchmarkController.initialize): Shows/Hides the test edit controls based on the adaptive test option.
199 (window.benchmarkController.onChangeAdaptiveTestCheckbox): An onchange event handler for the adaptive test checkbox.
201 * Animometer/tests/resources/main.js:
202 (Benchmark.prototype.update): Fix the complexity of the test if the running mode is non-adaptive test and desired complexity is not zero.
203 (window.runBenchmark): Add the test complexity as a new benchmark option.
205 2015-11-01 Said Abou-Hallawa <sabouhallawa@apple,com>
207 Make the size of the benchmark canvas adaptive to the screen size and screen resolution
208 https://bugs.webkit.org/show_bug.cgi?id=150530
210 Reviewed by Darin Adler.
212 We want to set the size of the benchmark stage dynamically such that it
213 depends on the screen resolution and the device scale factor. This patch
214 does more than that because the home page css was not done properly. To
215 use the flex box layout, the animometer.css has to be rewritten almost from
216 scratch. The suites tree has to be rewritten also because it was not collapsing
217 and with the flex box layout it was going outside of the window area. The
218 options handling and the local storage handling had to be rewritten to
219 allow more flexibility with this patch and the future patches. The code
220 in animometer.js was reorganized into objects to allow distributing the code
221 nicely among separate entities.
223 * Animometer/resources/extensions.js:
224 (Point.elementClientSize): Returns the client size of an HTMLElement as a Point object.
225 (Insets.prototype.get width): Follow the function opening brace style guidelines.
226 (Insets.prototype.get height):
227 (Insets.prototype.get size): Returns the size of an Insets as a Point object.
229 (window.DocumentExtension): Provides document helper functions. It should be assailable from the runner and the tests.
230 (window.DocumentExtension.createElement): Creates an HTMLElement given its name, attributes and parentElement.
231 (window.DocumentExtension.createSvgElement): Creates an SVGElement given its name, attributes and parentElement (moved from utilities.js).
232 (window.DocumentExtension.insertCssRuleAfter): Inserts a CSS rule after an exiting rule given its text.
234 (ResultsTable.prototype._showHeader): Use DocumentExtension functions.
235 (ResultsTable.prototype._showGraph): Use DocumentExtension functions and create a real button for "Graph..." option.
236 (ResultsTable.prototype._showJSON): Use DocumentExtension functions and create a real button for "JSON..." option.
239 * Animometer/runner/animometer.html: Restructure the page to use the flex box layout.
241 * Animometer/runner/resources/animometer.css:
245 (button.large-button):The large button appears in the animometer.html.
246 (button.large-button:active):
247 (button.large-button:disabled):
249 (button.small-button): The small button appears in the results table.
250 (button.small-button:active):
252 (.tree): The tree class is used to list the suites and their tests.
253 (.tree .expand-button): This button expands a tree element.
254 (.tree .expand-button ~ ul): Hide the children (<ul>...</ul>) of a parent node by default.
255 (.tree .expand-button:checked ~ ul): Show the children of a parent node only when checked.
256 (.tree ul): Hide the list bullets.
257 (.tree li): Indent every node in the tree relative to its parent.
258 (.tree ul li): Indent all the non top level nodes only (the tests nodes in our case).
259 (.tree > li:last-child): Do not indent the bottom of the last child node.
260 (.tree-label): Style for all the labels in the tree.
261 (label.tree-label): Style for the labels in the top level only (the suites nodes in our case).
262 (label.tree-label:before): Style the unchecked case of the expand-button.
263 (:checked ~ label.tree-label:before): Style the checked case of the expand-button.
265 (table.results-table): The results table appears while running the test and at the end.
269 (div.results-json): The JSON div appears per test or for the whole run.
271 (main): This is the flex box container.
273 (section): A section is displayed exclusively inside the <main>. It is hidden by default.
274 (section.selected): When it is selected, its layout is flex layout.
275 (section > footer): The header or the footer of a section should not take more than 15% of the container.
277 (section#home): The home section has <suites> and <options> parts to be laid out in the middle.
278 (section#home > options):
279 (section#home > suites): The <suites> should not take more than 40% of the width.
280 (section#home > options > label): The benchmark title.
281 (section#home > header > h2): The benchmark title.
282 (section#home > options > label > input[type="number"]): Sets the width of the option edit control.
284 (section#running): The running section contain the runner <iframe> which takes the whole area of the <main>.
285 (section#running > #running-test): This is the <iframe> container.
286 (section#running > #running-test > iframe): The <iframe> is created by the runner for each test.
287 (section#running > #progress): This is the progress bar.
288 (section#running > #progress > #progress-completed): This is another element which grows while the runner is progressing.
289 (section#running > #record): This the container of the record results table which is shown while running a test.
294 (section#test-graph): All these sections have the same layout. A <data> element is laid out between <header> and <footer>.
296 (section#results > data):
297 (section#json > data):
298 (section#test-json > data):
299 (section#test-graph > data): The <data> element should take 70% of the <section>.
301 (section#test-graph > data > svg):
303 (.left-samples): These styles are for the d3 graph.
305 (section#test-json > data): This is the style of the JSON <data> element.
309 (section > p): Deleted.
310 (section#home > p): Deleted.
311 (section#home > p:first-child): Deleted.
312 (#testContainer): Deleted.
313 (section#running #progress-completed): Deleted.
314 (section#results > table): Deleted.
315 (section#results > table td, th): Deleted.
316 (section#results > table tr.alt, td): Deleted.
317 (section#results > table th): Deleted.
318 (section#json > textarea): Deleted.
320 (.options p): Deleted.
321 (#suites ul): Deleted.
322 (#suites ul ul): Deleted.
323 (#suites ul ul input, #suites ul ul label): Deleted.
324 (#suites.showTests ul ul): Deleted.
326 (input[type="number"]): Deleted.
328 (.small-button): Deleted.
329 (#graphContainer): Deleted.
330 (.right-samples): Deleted.
331 (.sample-time): Deleted.
332 (.left-mean): Deleted.
333 (.right-mean): Deleted.
335 * Animometer/runner/resources/animometer.js:
336 (window.benchmarkRunnerClient.initialize): Initialize the client object with the options and the suites.
337 (window.benchmarkRunnerClient.willStartFirstIteration): Use new css selectors for results and the record table.
338 (window.benchmarkRunnerClient.didFinishLastIteration): Move the code which sets the JSON text to sectionsManager.showJSON().
340 (window.sectionsManager): Responsible of managing the <section>s elements inside animometer.html.
341 (window.sectionsManager._sectionHeaderH1Element): Return the <h1> inside the <header> of a given section.
342 (window.sectionsManager._sectionDataDivElement): Return the <div> inside the <data> of a given section.
343 (window.sectionsManager.showScore): Show the score of the last benchmark run.
344 (window.sectionsManager.showTestName): Show the test name for detailed results <section>.
345 (window.sectionsManager.showJSON): Shows the JSON text of the last benchmark or for a specific test.
346 (window.sectionsManager.showSection): Shows a specific <section> in the <main> container.
347 (window.sectionsManager.setupSectionStyle): Sets css attributes for all the <section>s.
348 (window.sectionsManager.setupRunningSectionStyle): Sets the css attributes for the running <section> only.
350 (window.optionsManager): Responsible of managing the user options and streaming them to/form the localStorage.
351 (window.optionsManager._optionsElements): Returns the children <input> elements of the <options>.
352 (window.optionsManager.updateUIFromLocalStorage): Restore the values of the <options> UI elements from the local storage.
353 (window.optionsManager.updateLocalStorageFromUI): Saves the values of the <options> UI elements to the local storage.
355 (window.suitesManager): Responsible of managing the user suites and streaming them to/form the localStorage.
356 (window.suitesManager._treeElement): Returns the suites tree container element.
357 (window.suitesManager._suitesElements): Returns a list of the suites elements.
358 (window.suitesManager._checkboxElement): Returns the checkbox element of a given suite.
359 (window.suitesManager._localStorageNameForTest): Generates a string for the tuple <suite, test> to be saved in the localStorage.
360 (window.suitesManager._updateSuiteCheckboxState): Updates the state of a suite checkbox from the state of its tests' checkboxes.
361 (window.suitesManager._updateStartButtonState): Updates the state of the start button from the state of the suites' checkboxes.
362 (window.suitesManager._onChangeSuiteCheckbox): Called when a suite checkbox is clicked.
363 (window.suitesManager._onChangeTestCheckbox): Called when a test checkbox is clicked.
364 (window.suitesManager._createSuiteElement): Creates suite node in the suites tree.
365 (window.suitesManager._createTestElement): Creates test node in the suites tree.
366 (window.suitesManager.createElements): Creates the suites tree dynamically from the array Suites.
367 (window.suitesManager.updateUIFromLocalStorage): Restore the values of the <suites> UI elements from the local storage.
368 (window.suitesManager.updateLocalStorageFromUI): aves the values of the <suites> UI elements to the local storage.
370 (window.benchmarkController): This is the UI controller of the animometer.html page.
371 (window.benchmarkController.initialize): Called when the animometer.html page is loaded.
372 (window.benchmarkController._runBenchmark): Starts a benchmark run.
373 (window.benchmarkController.startTest): Called when the "Start Test" button is clicked.
374 (window.benchmarkController.showResults): Called at the end of the test to show the final results.
375 (window.benchmarkController.showJson): Called from the results page to show the JSON of the last benchmark run.
376 (window.benchmarkController.showTestGraph): Called from the results the table to show a graph for the samples of a specific test.
377 (window.benchmarkController.showTestJSON): Called from the results the table to show a JSON for the samples of a specific test.
379 (showSection): Deleted.
380 (startTest): Deleted.
381 (showResults): Deleted.
383 (showTestGraph): Deleted.
384 (showTestJSON): Deleted.
385 (initialize.toggleTestsCheckbox.onchange): Deleted.
386 (initialize): Deleted.
387 (updateSuiteSelection): Deleted.
388 (updateTestSelection): Deleted.
389 (updateSuiteCheckbox): Deleted.
390 (localStorageNameForTest): Deleted.
391 (populateSettings.): Deleted.
392 (populateSettings): Deleted.
394 * Animometer/runner/resources/benchmark-runner.js:
395 (BenchmarkRunner): Pass the frameContainer element to the BenchmarkRunner.
396 (BenchmarkRunner.prototype._appendFrame): Remove unused parameter unwanted styling code.
397 (BenchmarkRunner.prototype.runMultipleIterations): Use the this._client.iterationCount instead of passing it as a parameter also.
399 * Animometer/runner/resources/graph.js:
400 (graph): Calculate the size of the chart from the container element.
402 * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
404 * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
405 (BouncingSvgParticlesStage.prototype._createDefs):
406 (BouncingSvgParticlesStage.prototype._createClipStar):
407 * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
408 (BouncingSvgShape.prototype._createShape):
409 (BouncingSvgShapesStage.prototype.createGradient):
410 Call DocumentExtension.createSvgElement() instead of calling Utilities.createSvgElement().
412 * Animometer/tests/resources/main.js:
413 (Animator.prototype.animate):
415 (Benchmark.prototype.update):
416 * Animometer/tests/resources/stage.js:
417 (StageBenchmark.prototype.showResults):
418 Rename the options to match the <input> ids in animometer.html.
420 * Animometer/tests/resources/utilities.js:
421 (window.Utilities.createSvgElement): Deleted.
423 * Animometer/tests/text/layering-text.html:
424 * Animometer/tests/text/resources/layering-text.js:
426 (LayeringTextStage.prototype._setFontSize): Sets the size of the text dynamically such that they all fit in one stage.
428 2015-10-29 Simon Fraser <simon.fraser@apple.com>
430 Animometer computes frame rate incorrectly
431 https://bugs.webkit.org/show_bug.cgi?id=150698
433 Reviewed by Tim Horton.
435 The existing code incremented this._frameCount after checking against this._dropFrameCount.
436 This has the effect of setting this._measureTimeOffset one frame too late, so
437 we were measuring only two frames, not three, and thus computing an incorrect fps.
439 * Animometer/tests/resources/main.js:
440 (Animator.prototype.animate):
442 2015-10-27 Jon Lee <jonlee@apple.com>
444 Add an option to make the graphics benchmark runs a specific test
445 https://bugs.webkit.org/show_bug.cgi?id=150528
446 rdar://problem/23246614
448 Reviewed by Zalan Bujtas.
450 Add a checkbox that lets the user list all of the available tests, and select
451 the ones to run repeatedly. The test checkboxes will update the state of the suite
452 checkbox. The selected tests are stored in localStorage to make it easy to do
455 * Animometer/runner/animometer.html: Add a checkbox to show individual tests.
457 * Animometer/runner/resources/animometer.css: Make the settings area a little wider
458 to accommodate the longer names of the tests
459 * Animometer/runner/resources/animometer.js:
460 (startBenchmark): Change the way that the suites are fed into the benchmark
461 runner. Go through each of the suites and their tests, and create a new Suite
462 with just the enabled tests. While enumerating store the enabled tests into
464 (initialize): Initialization routine (taking over populateSettings). When the
465 checkbox for showing tests is toggled, add or remove a class on #suites to show
466 the individual tests.
467 (updateSuiteSelection): Called whenever the user toggles the checkbox for a suite.
468 Either select all or none of the tests.
469 (updateTestSelection): Called whenever the user toggles the checkbox for a test.
470 (updateSuiteCheckbox): Update the state of the test's suite's checkbox to
471 indeterminate if there is at least one enabled test, unchecked if none are selected,
472 and checked if all are selected.
473 (localStorageNameForTest): Helper function to get the name of the test to use as
474 a key to localStorage.
475 (populateSettings): Add the tests for each suite into an inner list.
477 2015-10-26 Said Abou-Hallawa <sabouhallawa@apple.com>
479 Add an option to output the results of the graphics benchmark in JSON format
480 https://bugs.webkit.org/show_bug.cgi?id=150484
481 <rdar://problem/23243721>
483 Reviewed by Darin Adler.
485 * Animometer/resources/extensions.js:
486 (ResultsDashboard): A new class to hold the iterations results.
487 (ResultsDashboard.prototype.push): Appends an iteration results;
488 (ResultsDashboard.prototype.toJSON): Converts the iterations results to JSON format.
490 (RecordTable.prototype.clear): Clears the results table.
491 (RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
492 (RecordTable.prototype._showHeader): Shows the table header titles.
493 (RecordTable.prototype._showEmpty): Shows an empty table cell.
494 (RecordTable.prototype._showValue): Shows a number value in the results table.
495 (RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
496 (RecordTable.prototype._showTest): Shows the results of a single test.
497 (RecordTable.prototype._showSuite): Shows the results of a single suite.
498 (RecordTable.prototype.showRecord): Shows a single iteration for a single test.
499 (RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.
501 (ResultsTable): RecordTable was renamed to ResultsTable.
502 (ResultsTable.prototype.clear): Clears the table element.
503 (ResultsTable.prototype._showHeaderRow): Shows a row in the results table header.
504 (ResultsTable.prototype._showHeader): Shows the results table header.
505 (ResultsTable.prototype._showEmpty): Shows an empty table cell.
506 (ResultsTable.prototype._showText): Shows a string in a new table cell.
507 (ResultsTable.prototype._showFixedNumber): Shows a number in a new table cell.
508 (ResultsTable.prototype._showGraph): Shows a button for the sampled data graph.
509 (ResultsTable.prototype._showJSON): Shows a button for the sampled data JSON.
510 (ResultsTable.prototype._showTest): Shows the results of a single test.
511 (ResultsTable.prototype._showSuite): Shows the results of a single suite.
512 (ResultsTable.prototype._showIteration): Shows the results of a single iteration.
513 (ResultsTable.prototype.showRecord): Shows a single iteration for a single test.
514 (ResultsTable.prototype.showIterations): Shows all the results.
515 (RecordTable): Deleted.
516 (RecordTable.prototype.clear): Deleted.
517 (RecordTable.prototype._showTitles): Deleted.
518 (RecordTable.prototype._showHeader): Deleted.
519 (RecordTable.prototype._showEmpty): Deleted.
520 (RecordTable.prototype._showValue): Deleted.
521 (RecordTable.prototype._showSamples): Deleted.
522 (RecordTable.prototype._showTest): Deleted.
523 (RecordTable.prototype._showSuite): Deleted.
524 (RecordTable.prototype.showRecord): Deleted.
525 (RecordTable.prototype.showIterations): Deleted.
527 * Animometer/resources/sampler.js:
528 (Sampler.prototype.startSampling): Use forEach.
529 (Sampler.prototype.sample): Use forEach.
530 (Sampler.prototype.toJSON): Converts the sampler data to JSON format.
532 * Animometer/resources/strings.js: Added.
533 This new file will be used to associate the strings used by the benchmark
534 with IDs. A string can be changed in one place without having to change
535 all the instances of this string in multiple files. There two groups of
536 strings in this file. The first one is used by the UI elements and the second
537 group is used when constructing the results JSON.
539 * Animometer/runner/animometer.html:
540 * Animometer/runner/resources/animometer.css:
542 * Animometer/runner/resources/animometer.js:
543 (window.benchmarkRunnerClient.willAddTestFrame):
544 (window.benchmarkRunnerClient.willStartFirstIteration):
545 (window.benchmarkRunnerClient.didRunSuites):
546 (window.benchmarkRunnerClient.didFinishLastIteration):
547 Make benchmarkRunnerClient uses ResultsDashboard instead of _iterationsSamplers
548 Get the JSON from ResultsDashboard.toJSON() and pass it to ResultsTable.showIterations().
549 Also set the textContent of the "#json" textarea with the results JSON.
551 (showResults): Delete unneeded code.
552 (showJson): Shows the "json" section.
553 (showTestGraph): Rename showGraph() to be showTestGraph().
554 (showTestJSON): Shows the JSON of a single testResults.
555 (showGraph): Deleted.
557 * Animometer/runner/resources/tests.js:
558 Use the string table instead of putting literal strings.
560 * Animometer/tests/resources/stage.js:
561 (StageBenchmark.prototype.showResults):
562 Fix the parameters which are passed to RecordTable.showRecord().
564 * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
565 * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
566 * Animometer/tests/bouncing-particles/bouncing-css-images.html:
567 * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
568 * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
569 * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
570 * Animometer/tests/examples/canvas-electrons.html:
571 * Animometer/tests/examples/canvas-stars.html:
572 * Animometer/tests/simple/simple-canvas-paths.html:
573 * Animometer/tests/template/template-canvas.html:
574 * Animometer/tests/template/template-css.html:
575 * Animometer/tests/template/template-svg.html:
576 * Animometer/tests/text/layering-text.html:
577 Include the new strings.js file in all the test files.
579 2015-10-12 Jon Lee <jonlee@apple.com>
581 Add canvas line dash test
582 https://bugs.webkit.org/show_bug.cgi?id=150078
583 <rdar://problem/23082347>
585 Reviewed by Dean Jackson.
587 * Animometer/runner/resources/tests.js: Add line dash test.
588 * Animometer/tests/simple/resources/simple-canvas-paths.js:
589 (CanvasLineDashStage): Create a new stage with a default dash pattern and stroke style.
590 Maintain a step which will animate the dash.
591 (CanvasLineDashStage.prototype.animate): Render the line path with the dash. Increment
592 the dash offset to animate.
593 (CanvasPathBenchmark.prototype.createStage): Add the test.
595 2015-10-12 Jon Lee <jonlee@apple.com>
597 Add canvas line path tests
598 https://bugs.webkit.org/show_bug.cgi?id=150076
599 <rdar://problem/23082285>
601 Reviewed by Dean Jackson.
603 * Animometer/runner/resources/tests.js: Add new line path tests, with different
605 * Animometer/tests/simple/resources/simple-canvas-paths.js:
606 (CanvasLinePathStage): The stage is the same as the SimpleCanvasPathStrokeStage
607 but sets the lineJoin on the context.
608 (CanvasPathBenchmark.prototype.createStage): Add the tests.
610 2015-10-12 Jon Lee <jonlee@apple.com>
612 Add missing paint objects for arc and arcTo fills
613 https://bugs.webkit.org/show_bug.cgi?id=150075
614 <rdar://problem/23082233>
616 Reviewed by Dean Jackson.
618 * Animometer/tests/simple/resources/simple-canvas-paths.js: Add missing paint objects
619 for arcTo and arc segment fills.
620 (CanvasArcToSegmentFill):
621 (CanvasArcToSegmentFill.prototype.draw):
622 (CanvasArcSegmentFill):
623 (CanvasArcSegmentFill.prototype.draw):
625 2015-10-12 Jon Lee <jonlee@apple.com>
627 Add canvas line segment tests
628 https://bugs.webkit.org/show_bug.cgi?id=150073
629 <rdar://problem/23082138>
631 Reviewed by Dean Jackson.
633 * Animometer/runner/resources/tests.js: Add new line segment tests, with different
635 * Animometer/tests/simple/resources/simple-canvas-paths.js:
636 (CanvasLineSegment): Add new line segment paint object.
637 (CanvasLineSegmentStage): Create a new stage that sets the lineCap.
639 2015-10-12 Jon Lee <jonlee@apple.com>
641 Add canvas path fill tests
642 https://bugs.webkit.org/show_bug.cgi?id=150071
643 <rdar://problem/23082001>
645 Reviewed by Dean Jackson.
647 * Animometer/runner/resources/tests.js: Add new pathTypes for path fills.
648 * Animometer/tests/simple/resources/simple-canvas-paths.js:
649 (CanvasLinePoint): Add basic point for a line, and call lineTo.
650 (SimpleCanvasPathFillStage): Add a new stage similar to SimpleCanvasPathStrokeStage.
651 (CanvasPathBenchmark.prototype.createStage): Add the tests.
653 2015-10-12 Jon Lee <jonlee@apple.com>
655 Add canvas path tests
656 https://bugs.webkit.org/show_bug.cgi?id=150067
657 rdar://problem/23081463
659 Reviewed by Dean Jackson.
661 * Animometer/runner/resources/tests.js: Add a quadratic and bezier path test.
663 * Animometer/tests/simple/resources/simple-canvas.js:
664 (SimpleCanvasStage.prototype.tune): This kind of test joins all of the segments
665 into one long path, and tries to render that one path. Random points make it
666 difficult to tell what is going on, so add a parameter to the constructor to
667 confine the area where the random coordinates can land. The more complicated the
668 case is, the larger an area the path will cover. Add an artificial minimum so
669 that the first 200 points aren't confined to a space that is too small.
671 * Animometer/tests/simple/resources/simple-canvas-paths.js:
672 (SimpleCanvasPathStrokeStage): Add a new kind of stage that inherits from
673 SimpleCanvasStage. Each time the frame animates a random line width and stroke
674 color are chosen. The path setup is done outside of each paint object.
675 (CanvasQuadraticPoint): This point just calls quadraticCurveTo.
676 (CanvasPathBenchmark.prototype.createStage): Add the tests.
678 2015-10-12 Jon Lee <jonlee@apple.com>
680 Add basic canvas tests
681 https://bugs.webkit.org/show_bug.cgi?id=150066
682 rdar://problem/23081143
684 Reviewed by Dean Jackson.
686 This adds a new test suite that will cover all of the path-based canvas calls.
687 The patch will be divided up to cover tests with similar techniques.
689 The simplest version uses a SimpleCanvasStage.
691 * Animometer/runner/resources/tests.js: Add tests for quadratic, bezier, arcTo,
692 arc, and rect segments. Also include arcTo, arc, and rect fills.
693 * Animometer/tests/resources/stage.js:
694 (Stage.prototype.randomBool): Added for counterclockwise property for arc segments.
695 (Stage.prototype.randomInt): Fix how values are rounded, used by randomBool. It should
696 round instead of flooring everything.
697 * Animometer/tests/simple/resources/simple-canvas.js: Added. Defines common classes
698 used by all simple canvas tests. The page reads best bottom to top.
699 (SimpleCanvasStage): Basic stage. Pass a canvasObject which will be used to create new
700 objects as needed in tune().
701 (SimpleCanvasStage.prototype.tune): Modeled on other tests. Adds and removed objects
702 as specified by the provided |count|.
703 (SimpleCanvasStage.prototype.animate): Iterate over all the objects and ask them to draw.
704 There is no "animating" of the objects; they will just paint statically on the canvas.
705 (SimpleCanvasAnimator): Basic animator clears the canvas prior to painting.
706 (SimpleCanvasBenchmark): Hard-code the feedback loop parameters instead of including
707 them in the query parameters to the test URLs.
708 (SimpleCanvasBenchmark.prototype.createAnimator):
709 * Animometer/tests/simple/simple-canvas-paths.html: Added.
711 * Animometer/tests/simple/resources/simple-canvas-paths.js: Added. There is no "animating"
712 of these objects--they just paint statically on the canvas.
713 (CanvasQuadraticSegment): Paint a quadratic segment stroke.
714 (CanvasBezierSegment): Paint a bezier segment stroke.
715 (CanvasArcToSegment): Paint an arcTo stroke.
716 (CanvasArcSegment): Paint an arc stroke.
717 (CanvasRect): Paint a rect.
718 (CanvasRectFill): Paint a filled rect.
720 (CanvasPathBenchmark):
721 (CanvasPathBenchmark.prototype.createStage): Look for the pathType and create the
722 stage using the right paint object.
723 (window.benchmarkClient.create):
725 2015-10-12 Jon Lee <jonlee@apple.com>
727 Refactor tune() to pass in an integer-based count
728 https://bugs.webkit.org/show_bug.cgi?id=150060
729 <rdar://problem/23079425>
731 Reviewed by Dean Jackson.
733 All of the tune functions do an initial step of flooring the
734 # of painting objects to add or remove. Factor that out since
735 the complexity of all of these tests is always expressed in terms
738 * Animometer/tests/resources/main.js:
739 (Benchmark.prototype.update): Update the tuneValue.
741 * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
742 (BouncingParticlesStage.prototype.tune): Remove the count adjustment.
743 * Animometer/tests/examples/resources/canvas-electrons.js:
744 (CanvasElectronsStage.prototype.tune): Ditto.
745 * Animometer/tests/examples/resources/canvas-stars.js:
746 (CanvasStarsStage.prototype.tune): Ditto.
747 * Animometer/tests/text/resources/layering-text.js:
748 (LayeringTextStage.prototype.tune): Ditto.
750 2015-10-12 Jon Lee <jonlee@apple.com>
752 Store test-interval in localStorage
753 https://bugs.webkit.org/show_bug.cgi?id=150055
754 <rdar://problem/23078879>
756 Reviewed by Dean Jackson.
758 * Animometer/runner/resources/animometer.js:
759 (populateSettings): Keep track of the specified test interval in localStorage
760 to make it easy to repeat a test suite.
762 2015-10-12 Jon Lee <jonlee@apple.com>
764 Remove "../tests/" from the URLs of all tests
765 https://bugs.webkit.org/show_bug.cgi?id=150054
766 <rdar://problem/23078784>
768 Reviewed by Dean Jackson.
770 Presumably all tests will be running from the tests/ directory,
771 so we don't have to specify it in all of the test URLs.
773 * Animometer/runner/resources/benchmark-runner.js:
774 (BenchmarkRunnerState.prototype.prepareCurrentTest): Prepend
775 "../tests/" to all tests.
776 * Animometer/runner/resources/tests.js: Remove "../tests/" from
779 2015-10-12 Jon Lee <jonlee@apple.com>
781 Refactor test suites to a separate class.
782 https://bugs.webkit.org/show_bug.cgi?id=150053
783 <rdar://problem/23078645>
785 Reviewed by Dean Jackson.
787 Create a Suite class to refactor out prepare() and run().
788 Generate the checkboxes representing the suites using Suites
789 instead of maintaining a separate list. Also, save the
790 selections out to localStorage.
792 * Animometer/runner/animometer.html: Remove the explicitly listed
793 suites. These will be generated from Suites instead.
794 * Animometer/runner/resources/animometer.js:
795 (populateSettings): Iterate through Suites, and create the
796 label and checkbox. Attach the Suite object to the checkbox so
797 when the benchmark is started, we get direct access. Initialize
798 the checkmark based on its value in localStorage. Set this to
799 run when DOMContentLoaded is dispatched.
800 (startBenchmark): Grab all of the checkboxes, inspect their
801 values, add it to enabledSuites if selected. Remember whether
802 the suite was enabled in localStorage, so that it's easy to do
804 * Animometer/runner/resources/tests.js:
805 (Suite): Create a new Suite class. Refactor out prepare() and
806 run(), since all of them have the same implementation. Populate
807 Suites with Suite instances instead of generic objects.
809 2015-10-12 Jon Lee <jonlee@apple.com>
811 Update graph styles for legibility.
812 https://bugs.webkit.org/show_bug.cgi?id=150052
813 <rdar://problem/23078503>
815 Reviewed by Dean Jackson.
817 * Animometer/runner/resources/animometer.css: Update colors and
818 stroke thicknesses to make the graphs easier to read.
819 (.smaple-time): Correct to .sample-time
820 * Animometer/runner/resources/graph.js:
823 2015-10-12 Jon Lee <jonlee@apple.com>
825 Update graph styles for legibility.
826 https://bugs.webkit.org/show_bug.cgi?id=150052
827 <rdar://problem/23078503>
829 Reviewed by Dean Jackson.
831 * Animometer/runner/resources/animometer.css: Update colors and
832 stroke thicknesses to make the graphs easier to read.
833 (.smaple-time): Correct to .sample-time
834 * Animometer/runner/resources/graph.js:
837 2015-10-12 Filip Pizlo <fpizlo@apple.com>
839 Unreviewed, revert an unintended commit.
841 * JetStream/Octane2/crypto.js:
845 2015-10-05 Said Abou-Hallawa <sabouhallawa@apple.com>
847 Add a graphics benchmark
848 https://bugs.webkit.org/show_bug.cgi?id=149053
849 <rdar://problem/18984169>
851 Reviewed by Dean Jackson.
853 Instead of measuring the FPS of the animation, this benchmark measures the
854 test complexity when rendering at a set-point FPS which should be lower
855 than 60 FPS. This benchmark tries to stay at the set-point FPS by using
856 a closed loop control system PID function. The gain of the system is passed
857 as a parameter when running the test. Measuring the FPS faithfully results
858 very fluctuating values. A Kalman filter is used to give a better estimate
861 The animation of the tests is done manually. requestAnimationFrame() is
862 called with a callback. Inside this callback, the test is animating by
863 changing the positions of the elements inside the page. The test complexity
864 may change also if the current FPS is not equal to the desired FPS.
866 In this patch, the benchmark and the tests are included. The shared code
867 and the tests runner are included in separate patches.
869 * Animometer/runner/animometer.html:
870 * Animometer/runner/resources/animometer.js:
871 Add two new examples for more complex animation techniques.
872 Add an option to show/hide the test running results which is off by default.
874 * Animometer/runner/resources/tests.js: Added.
875 (suiteFromName): Returns a suite given its name.
876 (testFromName): Returns a test given its suite and name.
878 * Animometer/tests: Added.
879 This directory includes all the test suites to be run by the benchmark.
880 runner. All the tests should try to run on three stages: CSS, canvas and
883 * Animometer/tests/bouncing-particles: Added.
884 * Animometer/tests/bouncing-particles/resources: Added.
885 The bouncing particles test is an example of a simple animation technique.
887 * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Added.
888 * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Added.
889 * Animometer/tests/bouncing-particles/bouncing-css-images.html: Added.
890 * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Added.
891 * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Added.
892 * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Added.
893 Bouncing particles test pages.
895 * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: Added.
896 (BouncingParticle): Base class for a bouncing particle.
897 (BouncingParticle.prototype.center): Returns the center point or the particle.
898 (BouncingParticle.prototype.animate): Moves the particle based on its current position, angle and velocity.
900 (BouncingParticlesAnimator): A sub class of Animator.
902 (BouncingParticlesStage): Represents the container of all the bouncing particles.
903 (BouncingParticlesStage.prototype.parseShapeParamters): Gets the shape parameters for shape animating tests.
904 (BouncingParticlesStage.prototype.randomRotater): Creates a rotater for the particles.
905 (BouncingParticlesStage.prototype.animate): Animates all the particles.
906 (BouncingParticlesStage.prototype.tune): Changes the test by adding or removing particles.
908 (BouncingParticlesBenchmark): Runs the benchmark for bouncing particles test.
909 (BouncingParticlesBenchmark.prototype.createAnimator): Creates an animator of type BouncingParticlesAnimator.
911 * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: Added.
912 (BouncingCssShape): A sub class of BouncingParticle for animating CSS shapes.
913 (BouncingCssShape.prototype._createSpan): Creates a <span> element and takes the shape and clipping classes into consideration.
914 (BouncingCssShape.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
915 (BouncingCssShape.prototype.animate): Rotates and moves the shape to a new location.
917 (BouncingCssShapesStage): A sub class of BouncingParticlesStage for animating CSS shapes.
918 (BouncingCssShapesStage.prototype.createParticle): Creates a particle of type BouncingCssShape.
919 (BouncingCssShapesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.
921 (BouncingCssShapesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS shapes.
922 (BouncingCssShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCssShapesStage.
923 (window.benchmarkClient.create): Creates a benchmark of type BouncingCssShapesBenchmark.
925 * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: Added.
926 (BouncingCssImage): A sub class of BouncingParticle for animating CSS images.
927 (BouncingCssImage.prototype._move): Move the particle to a new location. Apply transform since it does not require layout.
928 (BouncingCssImage.prototype.animate): Rotates and moves the shape to a new location.
930 (BouncingCssImagesStage): A sub class of BouncingParticlesStage for animating CSS images.
931 (BouncingCssImagesStage.prototype.createParticle): Creates a particle of type BouncingCssImage.
932 (BouncingCssImagesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.
934 (BouncingCssImagesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS images.
935 (BouncingCssImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCssImagesStage.
936 (window.benchmarkClient.create): Creates a benchmark of type BouncingCssImagesBenchmark.
938 * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Added.
939 (BouncingCanvasParticle): A base sub-class of BouncingParticle for animating canvas particles.
940 (BouncingCanvasParticle.prototype._applyRotation): Apply the particle rotation-around-center transform to the canvas context.
941 (BouncingCanvasParticle.prototype._applyClipping): Apply the particle clipping to the canvas context.
942 (BouncingCanvasParticle.prototype._draw): A non-implemented version of the drawing function.
943 (BouncingCanvasParticle.prototype.animate): Carries out all the steps to redraw the canvas particle.
945 (BouncingCanvasParticlesStage): A base sub-class of BouncingParticlesStage for animating canvas particles.
947 (BouncingCanvasParticlesAnimator): A concrete sub-class of BouncingParticlesAnimator for animating canvas particles.
948 (BouncingCanvasParticlesAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
950 (BouncingCanvasParticlesBenchmark): A base sub-class of StageBenchmark for animating canvas particles.
951 (BouncingCanvasParticlesBenchmark.prototype.createAnimator): Creates the canvas particles animator.
953 * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Added.
954 (BouncingCanvasShape): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
955 (BouncingCanvasShape.prototype._applyFill): Sets the fillStyle in the canvas context.
956 (BouncingCanvasShape.prototype._drawShape): Carries out the actual drawing.
957 (BouncingCanvasShape.prototype._draw): Carries out all the steps to draw the shape.
959 (BouncingCanvasShapesStage): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
960 (BouncingCanvasShapesStage.prototype.createParticle): Creates a particle of type BouncingCanvasShape.
962 (BouncingCanvasShapesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas shapes.
963 (BouncingCanvasShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasShapesStage.
964 (window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasShapesBenchmark.
966 * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Added.
967 (BouncingCanvasImage): A concrete sub-class of BouncingCanvasParticle for animating canvas images.
968 (BouncingCanvasImage.prototype._draw): Draws an image on the context of a canvas.
970 (BouncingCanvasImagesStage): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
971 (BouncingCanvasImagesStage.prototype.createParticle): Creates a particle of type BouncingCanvasImage.
973 (BouncingCanvasImagesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
974 (BouncingCanvasImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasImagesStage.
975 (window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasImagesBenchmark.
977 * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js: Added.
978 (BouncingSvgParticle): A base sub-class of BouncingParticle for animating SVG particles.
979 (BouncingSvgParticle.prototype._applyClipping): Apply the particle clipping by setting the 'clip-path' attribute of the SVGElement.
980 (BouncingSvgParticle.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
981 (BouncingSvgParticle.prototype.animate): Rotates and moves the shape to a new location.
982 (BouncingSvgParticlesStage): A sub class of BouncingParticlesStage for animating SVGElements.
983 (BouncingSvgParticlesStage.prototype._createDefs): Creates an SVGDefsElement.
984 (BouncingSvgParticlesStage.prototype._ensureDefsIsCreated): Ensures there is only one SVGDefsElement is created.
985 (BouncingSvgParticlesStage.prototype._createClipStar): Creates an SVGClipPathElement and sets its 'd' attribute to a star like shape.
986 (BouncingSvgParticlesStage.prototype.ensureClipStarIsCreated): Ensure there is only one star SVGClipPathElement is created.
987 (BouncingSvgParticlesStage.prototype.particleWillBeRemoved): Remove the corresponding element form the parent children list.
989 * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Added.
990 (BouncingSvgShape): A concrete sub-class of BouncingSVGParticle for animating SVG shapes.
991 (BouncingSvgShape.prototype._createShape): Creates an SVG shape.
992 (BouncingSvgShape.prototype._applyFill): Applies the selected fill style to the SVG shape.
994 (BouncingSvgShapesStage): A concrete sub-class of BouncingSvgParticlesStage for animating SVG shapes.
995 (BouncingSvgShapesStage.prototype.createGradient): Creates an SVGLinearGradientElement.
996 (BouncingSvgShapesStage.prototype.createParticle): Creates a particle of type BouncingSvgShape.
997 (BouncingSvgShapesStage.prototype.particleWillBeRemoved): Ensures the attached SVGLinearGradientElement is removed from the SVGDefsElement.
999 (BouncingSvgShapesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
1000 (BouncingSvgShapesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgShapesStage.
1001 (window.benchmarkClient.create): Creates a benchmark of type BouncingSvgShapesBenchmark.
1003 * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: Added.
1004 (BouncingSvgImage): A concrete sub-class of BouncingSVGParticle for animating SVG images.
1006 (BouncingSvgImagesStage): A concrete sub-class of BouncingSVGParticlesBenchmark for animating SVG images.
1007 (BouncingSvgImagesStage.prototype.createParticle): Creates a particle of type BouncingSvgImage.
1009 (BouncingSvgImagesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
1010 (BouncingSvgImagesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgImagesStage.
1011 (window.benchmarkClient.create): Creates a benchmark of type BouncingSvgImagesBenchmark.
1013 * Animometer/tests/examples: Added.
1014 * Animometer/tests/examples/canvas-electrons.html: Added.
1015 * Animometer/tests/examples/canvas-stars.html: Added.
1016 Examples test pages.
1018 * Animometer/tests/examples/resources: Added.
1019 * Animometer/tests/examples/resources/canvas-electrons.js: Added.
1020 (CanvasElectron): An object which draws and animate a electron object on a canvas stage.
1021 (CanvasElectron.prototype._draw): Draws the electron object.
1022 (CanvasElectron.prototype.animate): Animates the electron object.
1024 (CanvasElectronsStage): A concrete sub-class of Stage for animating electrons.
1025 (CanvasElectronsStage.prototype.tune): Changes the test by adding or removing elements.
1026 (CanvasElectronsStage.prototype.animate): Animates the test elements.
1028 (CanvasElectronsAnimator): A concrete sub-class of StageAnimator for animating canvas electrons.
1029 (CanvasElectronsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
1031 (CanvasElectronsBenchmark): A concrete sub-class of StageBenchmark for animating electrons.
1032 (CanvasElectronsBenchmark.prototype.createStage): Creates a stage of CanvasElectronsStage.
1033 (CanvasElectronsBenchmark.prototype.createAnimator): Creates an animator of type CanvasElectronsAnimator.
1034 (window.benchmarkClient.create): Creates a benchmark of type CanvasElectronsBenchmark.
1036 * Animometer/tests/examples/resources/canvas-stars.js: Added.
1037 (CanvasStar): An object which draws and animate a star object on a canvas stage.
1038 (CanvasStar.prototype._draw): Draws the star object.
1039 (CanvasStar.prototype.animate): Animates the star object.
1041 (CanvasStarsStage): A concrete sub-class of Stage for animating stars.
1042 (CanvasStarsStage.prototype.tune): Changes the test by adding or removing elements.
1043 (CanvasStarsStage.prototype.animate): Animates the test elements.
1045 (CanvasStarsAnimator): A concrete sub-class of StageAnimator for animating canvas stars.
1046 (CanvasStarsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
1048 (CanvasStarsBenchmark): A concrete sub-class of Benchmark for animating stars.
1049 (CanvasStarsBenchmark.prototype.createStage): Creates a stage of CanvasStarsStage.
1050 (CanvasStarsBenchmark.prototype.createAnimator): Creates an animator of type CanvasStarsAnimator.
1051 (window.benchmarkClient.create): Creates a benchmark of type CanvasStarsBenchmark.
1053 * Animometer/tests/resources: Added.
1054 This directory includes the script which is required to run an adaptive
1055 graphics benchmark. From an empty test page, the set of classes in this
1056 directory are responsible for measuring the current frame rate and
1057 changing the test to reach a desired FPS. It keeps asking the test page
1058 to tune itself by a certain value to increase or decrease the frame rate.
1059 It's also responsible for sampling the test state and the corresponding
1062 * Animometer/tests/resources/main.js: Added.
1063 (BenchmarkState): Tracks the state of the benchmark test.
1064 (BenchmarkState.prototype._timeOffset): Returns the timeOffset of a stage.
1065 (BenchmarkState.prototype._message): Returns the message of a stage.
1066 (BenchmarkState.prototype.update): Sets the currentTimeOffset to a new value.
1067 (BenchmarkState.prototype.samplingTimeOffset): Returns the timeOffset of the sampling stage.
1068 (BenchmarkState.prototype.currentStage): Returns the current stage of the benchmark.
1069 (BenchmarkState.prototype.currentMessage): Returns the message of the current stage and timeOffset.
1070 (BenchmarkState.prototype.currentProgress): Returns a percentage of how much the benchmark is running.
1072 (Animator): Manages animating the test.
1073 (Animator.prototype.start): Called if animating using setInterval is requested.
1074 (Animator.prototype.timeDelta): Returns the current timeDelta
1075 (Animator.prototype.animate): Manages the test animation.
1076 (Animator.prototype.animateLoop): Called if animating using requestAnimationFrame is requested.
1078 (Benchmark): Manages running the test benchmark and recording the sampled data.
1079 (Benchmark.prototype.start): Starts the benchmark.
1080 (Benchmark.prototype.update): Called from the animator.animate() to change the complexity of the test.
1081 (Benchmark.prototype.record): Shows the current (not final) results of the benchmark.
1082 (Benchmark.prototype.resolveWhenFinished): Spins until the benchmark is finished and returns its results.
1083 (Benchmark.prototype.run): Starts the test, runs it, waits until it is finished and return its results.
1084 (window.runBenchmark): Called from the benchmark runner through the suite controller run-callback.
1086 * Animometer/tests/resources/math.js: Added.
1087 (Matrix): A matrix object.
1088 (Vector3): A vector of size 3 object.
1089 (Matrix3): A matrix of size 3x3 object.
1091 (PIDController): Closed-loop controller for a set-point y.
1092 (PIDController.prototype._sat): Limits the output to a certain range.
1093 (PIDController.prototype.tune): Given the current output of a system, it produces a new pid value for tuning it.
1095 (KalmanEstimator): Implement Kalman filter to get an estimate for a sampled data point.
1096 (KalmanEstimator.prototype.estimate): Returns an estimate for for a sampled data point.
1098 * Animometer/tests/resources/utilities.js: Added.
1099 (window.Utilities._parse): Given a separator character, it pareses a string to a set of <key, value> pairs.
1100 (window.Utilities.parseParameters): Parses a test parameters.
1101 (window.Utilities.parseArguments): Parses a tag arguments.
1102 (window.Utilities.extendObject): Adds the attributes and their values of an object to another object.
1103 (window.Utilities.copyObject): Copies the attributes and their values of an object to a new object.
1104 (window.Utilities.mergeObjects): Copies the attributes and their values of two objects to a new object.
1105 (window.Utilities.createSvgElement): Creates an SVGElement given its name and its attributes.
1107 * Animometer/tests/resources/stage.css: Added.
1108 * Animometer/tests/resources/stage.js: Added.
1109 (Rotater): Manages rotating an angle within a fixed time interval.
1110 (Rotater.prototype.get interval): Returns the time interval which is required to rotate 360 degrees.
1111 (Rotater.prototype.next): Moves the current time by a delta.
1112 (Rotater.prototype.degree): Returns the current rotating degree.
1113 (Rotater.prototype.rotateZ): Returns CSS formatted transform rotateZ() string for the current degree.
1114 (Rotater.prototype.rotate): Returns SVG formatted transform rotate() string for the current degree.
1116 (Stage): A base class for managing the test complexity and test animation.
1117 (Stage.prototype.get size): Returns the size of the stage excluding the CSS padding.
1118 (Stage.prototype.random): Returns a random float.
1119 (Stage.prototype.randomInt): Returns a random integer.
1120 (Stage.prototype.randomPosition): Returns a random position.
1121 (Stage.prototype.randomSquareSize): Returns a square size.
1122 (Stage.prototype.randomVelocity): Returns a random velocity.
1123 (Stage.prototype.randomAngle): Returns a random angle.
1124 (Stage.prototype.randomColor): Returns a random color not too dark and not too light.
1125 (Stage.prototype.randomRotater): Creates a random rotater. Its velocity depends on choosing a random rotation time interval.
1126 (Stage.prototype.tune): A not-implemented version of this function.
1127 (Stage.prototype.animate): A not-implemented version of this function.
1128 (Stage.prototype.clear): Clears the stage from all its animation elements.
1130 (StageAnimator): A base class for the stage-based animators.
1131 (StageAnimator.prototype.animate): Calls Animator.animate() which updates the test page and then calls Stage.animate() to force redraw.
1133 (StageBenchmark): A base class for the stage-based benchmarks.
1134 (StageBenchmark.prototype.createStage): Creates the default stage.
1135 (StageBenchmark.prototype.createAnimator): Creates the default animator.
1136 (StageBenchmark.prototype.tune): Delegates the call to stage.
1137 (StageBenchmark.prototype.clear): Delegates the call to stage.
1138 (StageBenchmark.prototype.showResults): Shows the results/progress through its recordTable and progressBar.
1140 * Animometer/tests/resources/yin-yang.png: Added.
1141 * Animometer/tests/resources/yin-yang.svg: Added.
1142 These images are shared among all the tests.
1144 * Animometer/tests/template: Added.
1145 * Animometer/tests/template/resources: Added.
1146 This directory includes template tests which do nothing. They can be used
1147 to author new tests. Animated items can be created, moved and redrawn by
1148 removing the TODO comments in the script files and writing actual code.
1150 * Animometer/tests/template/template-css.html: Added.
1151 * Animometer/tests/template/template-canvas.html: Added.
1152 * Animometer/tests/template/template-svg.html: Added.
1153 Template test pages. They can be used as they are. CSS attributes or hidden
1154 elements can be added to these derived test pages if needed.
1156 * Animometer/tests/template/resources/template-css.js: Added.
1158 (TemplateCssStage): A stage to create and animate HTMLElements.
1159 (TemplateCssStage.prototype.tune): Changes the test by adding or removing elements.
1160 (TemplateCssStage.prototype.animate): Animates the test elements.
1161 (TemplateCssBenchmark):
1162 (TemplateCssBenchmark.prototype.createStage): Creates the test stage.
1163 (window.benchmarkClient.create): Creates a benchmark of type TemplateCssBenchmark.
1165 * Animometer/tests/template/resources/template-canvas.js: Added.
1166 (TemplateCanvasObject):
1167 (TemplateCanvasObject.prototype._draw): Draws the objects on the canvas context.
1168 (TemplateCanvasObject.prototype.animate): Moves and redraws the object.
1169 (TemplateCanvasStage): A stage to create and animate drawing elements.
1170 (TemplateCanvasStage.prototype.tune): hanges the test by adding or removing elements.
1171 (TemplateCanvasStage.prototype.animate): Animates the test elements.
1172 (TemplateCanvasAnimator.prototype.animate): Starts the animation every frame.
1173 (TemplateCanvasBenchmark):
1174 (TemplateCanvasBenchmark.prototype.createStage): Creates a stage of type TemplateCanvasStage.
1175 (TemplateCanvasBenchmark.prototype.createAnimator): Creates a animator of type TemplateCanvasAnimator.
1176 (window.benchmarkClient.create): Creates a benchmark of type TemplateCanvasBenchmark.
1178 * Animometer/tests/template/resources/template-svg.js: Added.
1179 (TemplateSvgStage): A stage to create and animate SVGElements.
1180 (TemplateSvgStage.prototype.tune): Changes the test by adding or removing elements.
1181 (TemplateSvgStage.prototype.animate): Animates the test elements.
1182 (TemplateSvgBenchmark.prototype.createStage): Creates a stage of type TemplateSvgStage.
1183 (window.benchmarkClient.create): Creates a benchmark of type TemplateSvgBenchmark.
1185 * Animometer/tests/text: Added.
1186 * Animometer/tests/text/resources: Added.
1187 This directory includes the text animating tests which currently runs
1190 * Animometer/tests/text/layering-text.html: Added.
1193 * Animometer/tests/text/resources/layering-text.js: Added.
1194 (LayeringTextStage): Represents the container of all the stacked text layers.
1195 (LayeringTextStage.parseTextItem): Parses a textItem which may be an opening tag, a closing tag or a self-closing tag.
1196 (LayeringTextStage.isOpeningTextItem): Returns true if the textItem is an opening tag e.g. '<ol>'.
1197 (LayeringTextStage.isClosingTextItem): Returns true if the textItem is an closing tag e.g. '</ol>.
1198 (LayeringTextStage.textItemsFlags.LayeringTextStage.textItems.map): Calculates and stores isOpening and isClosing flags for each textItem.
1199 (LayeringTextStage.isColorableTextItem): Returns true if the textItem is self-closing tag e.g. '<p>...</p>'.
1200 (LayeringTextStage.isInsertableTextItem): Returns true if the textItems causes a new element to be added to the text layers.
1201 (LayeringTextStage.colorableTextItems.LayeringTextStage.textItemsFlags.filter): Number of colorable textItems.
1202 (LayeringTextStage.insertableTextItems.LayeringTextStage.textItemsFlags.filter): Number of insertable textItems.
1203 (LayeringTextStage.colorIndexToTextElementIndex): Maps from colorIndex [0..colorableTextItems-1] to textElementIndex [0..insertableTextItems-1].
1204 (LayeringTextStage.prototype._nextTextItem): Moves the _textItemIndex one step forward in a loop [0..LayeringTextStage.textItems.length-1].
1205 (LayeringTextStage.prototype._previousTextItem): Moves the _textItemIndex one step backward in a loop.
1206 (LayeringTextStage.prototype._pushTextElement): Creates a new textItemElement and adds it to the topmost container <div>.
1207 (LayeringTextStage.prototype._popTextElement): Removes the last textItemElement from the topmost container <div>.
1208 (LayeringTextStage.prototype._colorTextItem): Changes the background color of a single colorable textElement. The index advances in a circle [0..colorableTextItems-1].
1209 (LayeringTextStage.prototype.animate): Changes the background color and the text color of the textElements such that a redraw is enforced.
1210 (LayeringTextStage.prototype.tune): Adds or removes textElements to the stage.
1212 (LayeringTextBenchmark): Runs the benchmark for the layering text test.
1213 (LayeringTextBenchmark.prototype.createStage): Creates a stage of type LayeringTextStage.
1214 (window.benchmarkClient.create): Creates a benchmark of type LayeringTextBenchmark.
1216 2015-10-02 Said Abou-Hallawa <sabouhallawa@apple.com>
1218 Add shared code for a new a graphics benchmark
1219 https://bugs.webkit.org/show_bug.cgi?id=149691
1221 Reviewed by Ryosuke Niwa.
1223 This set of classes will be shared and used by the tests and the runner
1224 of a new graphics benchmark.
1226 * Animometer/resources: Added.
1227 * Animometer/resources/algorithm.js: Added.
1228 (Array.prototype.swap): Swaps two elements in an array.
1229 (Heap): Binary Min/Max Heap object
1230 (Heap.prototype._parentIndex): Given the child node index, it returns the parent index.
1231 (Heap.prototype._leftIndex): Given the parent node index, it returns the left node index.
1232 (Heap.prototype._rightIndex): Given the parent node index, it returns the right node index.
1233 (Heap.prototype._childIndex): Given the parent node index, it returns the child index that may violate the heap property.
1234 (Heap.prototype.init): Initializes the heap state.
1235 (Heap.prototype.top): Returns the value stored at the top of the heap.
1236 (Heap.prototype.push): Pushes a new node at the top of the heap.
1237 (Heap.prototype.pop): Extracts the top node of the heap.
1238 (Heap.prototype._bubble): Fixes the heap property by moving upward.
1239 (Heap.prototype._sink): Fixes the heap property by moving downward.
1240 (Heap.prototype.str): Prints the nodes of the heap to a string.
1241 (Heap.prototype.values): Returns the last "size" heap elements values.
1243 (Algorithm.createMinHeap): Creates a size-bounded min-heap object.
1244 (Algorithm.createMaxHeap): Creates a size-bounded max-heap object.
1246 * Animometer/resources/extensions.js: Added.
1247 (Point): Point object but can be used as size also.
1248 (Point.pointOnCircle): Given, the radius of the circle and the angle of the point, it returns a point object.
1249 (Point.pointOnEllipse): Given, the radiuses of the ellipse and the angle of the point, it returns a point object.
1250 (Point.prototype.get width): Should be called when the point is used as size.
1251 (Point.prototype.get height): Should be called when the point is used as size.
1252 (Point.prototype.get center): Should be called when the point is used as size.
1253 (Point.prototype.add): Returns a new point = this + other.
1254 (Point.prototype.subtract): Returns a new point = this - other.
1255 (Point.prototype.multiply): Returns a new point = this * other.
1256 (Point.prototype.move): Moves the point in a given direction, velocity, time period.
1258 (Insets): Represents borders of a container.
1259 (Insets.prototype.get width): Returns left + right.
1260 (Insets.prototype.get height): Returns top + bottom.
1263 (SimplePromise.prototype.then):
1264 (SimplePromise.prototype.resolve):
1265 Moved from Animometer/runner/resources/benchmark-runner.js since tests also need it.
1267 (Options): Benchmark running options as they are set by the user.
1269 (ProgressBar): Manages a progress bar element. The progress bar is divided into equal length ranges.
1270 (ProgressBar.prototype._progressToPercent): Converts the progress into a percentage.
1271 (ProgressBar.prototype.incRange): Moves to the next range (a range is the running time of a single test).
1272 (ProgressBar.prototype.setPos): Draws the current progress in the current range.
1274 (RecordTable): Shows the results of running a benchmark in a tabular form.
1275 (RecordTable.prototype.clear): Clears the results table.
1276 (RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
1277 (RecordTable.prototype._showHeader): Shows the table header titles.
1278 (RecordTable.prototype._showEmpty): Shows an empty table cell.
1279 (RecordTable.prototype._showValue): Shows a number value in the results table.
1280 (RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
1281 (RecordTable.prototype._showTest): Shows the results of a single test.
1282 (RecordTable.prototype._showSuite): Shows the results of a single suite.
1283 (RecordTable.prototype.showRecord): Shows a single iteration for a single test.
1284 (RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.
1286 * Animometer/resources/sampler.js: Added.
1287 (Statistics.sampleMean): Returns the sample mean.
1288 (Statistics.unbiasedSampleStandardDeviation): Returns the unbiased sample variance (i.e. with Bessel's correction)
1289 (Statistics.geometricMean): Returns the geometric mean.
1291 (Experiment): Represents a sampling experiment.
1292 (Experiment.prototype._init): Called when the object is created and when startSampling() is called.
1293 (Experiment.prototype.startSampling): Called after warmup period. Restarts collecting sampled data points.
1294 (Experiment.prototype.sample): Add a new data point.
1295 (Experiment.prototype.mean): Returns the sample mean for the current sampled data points.
1296 (Experiment.prototype.standardDeviation): Returns the sample standard deviation for the current sampled data points.
1297 (Experiment.prototype.percentage): Returns the percentage of the standard deviation divided to the mean.
1298 (Experiment.prototype.confidenceIntervalDelta): Calculates the confidence delta for the current sampled data given a confidence level.
1299 (Experiment.prototype.concern): Returns the average of the worst given percentage from the sampled data.
1300 (Experiment.prototype.score): Returns a score for the sampled data. It is the geometric mean of sampleMean and concern.
1302 (Sampler): Represents a compound experiment. It manages sampling multiple data points at the same time offset.
1303 (Sampler.prototype.startSampling): Called after warming up period. Restarts collecting sampled data points.
1304 (Sampler.prototype.sample): Add a new data vector at a given time offset.
1306 2015-10-02 Said Abou-Hallawa <sabouhallawa@apple.com>
1308 Add the test runner for a new a graphics benchmark
1309 https://bugs.webkit.org/show_bug.cgi?id=149683
1311 Reviewed by Ryosuke Niwa.
1313 The test runner collects the selected test suites and the running options
1314 from its home page. It loops through all the tests, runs them and collects
1315 their running results. At the end, it shows summary results and a final
1316 score. It can also show a chart for a test sampled data.
1318 * Animometer: Added.
1319 * Animometer/runner: Added.
1320 * Animometer/runner/resources: Added.
1322 * Animometer/runner/animometer.html: Added.
1323 * Animometer/runner/resources/animometer.css: Added.
1324 The benchmark runner page and css.
1326 * Animometer/runner/resources/animometer.js: Added.
1327 (window.benchmarkRunnerClient.willAddTestFrame): Called after the test <iframe> is created.
1328 (window.benchmarkRunnerClient.didRunTest): Called after running a test is finished.
1329 (window.benchmarkRunnerClient.willStartFirstIteration): Called at the beginning before running any test.
1330 (window.benchmarkRunnerClient.didRunSuites): Called after running all tests of a suite.
1331 (window.benchmarkRunnerClient.didFinishLastIteration): Called after running the last test.
1333 (showSection): Shows a section in the animometer.html page.
1334 (startTest): Called when the "Start Test" button is clicked.
1335 (showResults): Called after finishing all the tests.
1336 (showGraph): Called when "Click..." button in the "Samples" column of the results table is clicked
1338 * Animometer/runner/resources/benchmark-runner.js: Copied from PerformanceTests/Speedometer/resources/benchmark-runner.js.
1339 (BenchmarkRunnerState): Tracks the current running <suite, test>
1340 (BenchmarkRunnerState.prototype.currentSuite): Returns the current running suite.
1341 (BenchmarkRunnerState.prototype.currentTest): Returns the current running test.
1342 (BenchmarkRunnerState.prototype.isFirstTest): Returns true if we are running the first test in the current suite.
1343 (BenchmarkRunnerState.prototype.next): Advances to the next test.
1344 (BenchmarkRunnerState.prototype.prepareCurrentTest): Creates a new <iframe> and waits for it to load a test.
1346 (BenchmarkRunner): Manages running the tests and communicating with the benchmarkRunnerClient.
1347 (BenchmarkRunner.prototype.waitForElement): Waits for an element to be created.
1348 (BenchmarkRunner.prototype._appendFrame): Creates a new <iframe> element.
1349 (BenchmarkRunner.prototype._removeFrame): Removed the current <iframe> element.
1350 (BenchmarkRunner.prototype._runTestAndRecordResults): Runs the current test and saves its results.
1351 (BenchmarkRunner.prototype.step): Either runs the current test if there is or start a new iteration.
1352 (BenchmarkRunner.prototype.runAllSteps): Loops to run all the tests and move to the next iteration.
1353 (this._runNextIteration): Starts a new iteration or show the results.
1354 (BenchmarkRunner.prototype.runMultipleIterations): Loops to run all the iterations and show the results
1355 (BenchmarkRunner.prototype._finalize): Finalizes the current iteration and starts a new one.
1357 (SimplePromise): Deleted.
1358 (SimplePromise.prototype.then): Deleted.
1359 (SimplePromise.prototype.resolve): Deleted.
1360 (BenchmarkTestStep): Deleted.
1361 (Fibonacci): Deleted.
1362 SimplePromise was moved t Animometer/resources/extensions.js because it is used by the runner and the tests.
1364 (BenchmarkRunner.prototype._waitAndWarmUp): Deleted.
1365 (BenchmarkRunner.prototype._runTest): Deleted.
1366 (BenchmarkState.prototype.currentSuite): Deleted.
1367 (BenchmarkState.prototype.currentTest): Deleted.
1368 (BenchmarkState.prototype.next): Deleted.
1369 (BenchmarkState.prototype.isFirstTest): Deleted.
1370 (BenchmarkState.prototype.prepareCurrentSuite): Deleted.
1371 BenchmarkState was renamed to BenchmarkRunnerState to not be confused with the tests BenchmarkState.
1373 * Animometer/runner/resources/d3.min.js: Copied from Websites/perf.webkit.org/public/v2/js/d3/d3.min.js.
1374 Needed for drawing charts for the sampled scores and frame rates.
1376 * Animometer/runner/resources/graph.js: Added.
1377 (graph): Draws a chart for a test sampled data. It shows two y-axes: one for the animated items and the second for FPS.
1379 * Skipped: Skip the Animometer benchmark for now.
1381 2015-08-27 Csaba Osztrogonác <ossy@webkit.org>
1383 [EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
1384 https://bugs.webkit.org/show_bug.cgi?id=148470
1386 Unreviewed gardening, skip the hanging test to make the performance bot work.
1390 2015-08-17 Chris Dumez <cdumez@apple.com>
1392 Add performance tests for traversal of collections returned by getElementsByClassName() / getElementsByTagName()
1393 https://bugs.webkit.org/show_bug.cgi?id=148080
1395 Reviewed by Antti Koivisto.
1397 Add performance tests for traversal of *uncached* collections returned
1398 by getElementsByClassName() / getElementsByTagName(). These methods
1399 will soon be updated to return an HTMLCollection instead of a
1400 NodeList and we need to make sure we don't regress performance in the
1403 * DOM/get-elements-by-class-name-traversal-uncached.html: Added.
1404 * DOM/get-elements-by-tag-name-traversal-uncached.html: Added.
1406 2015-08-14 Chris Dumez <cdumez@apple.com>
1408 Add performance tests for NodeList and HTMLCollection traversal
1409 https://bugs.webkit.org/show_bug.cgi?id=148043
1411 Reviewed by Gavin Barraclough.
1413 Add performance tests for NodeList and HTMLCollection traversal.
1414 Ideally, those 2 tests should be as fast. However, due to inefficiencies
1415 in our HTMLCollection bindings code, the HTMLCollection tests is ~30%
1416 slower. This will be addressed in the near future.
1418 * Bindings/childNodes-traversal.html: Added.
1419 * Bindings/children-traversal.html: Added.
1421 2015-08-05 Myles C. Maxfield <mmaxfield@apple.com>
1423 Add a second font-fallback performance test
1424 https://bugs.webkit.org/show_bug.cgi?id=147692
1426 Reviewed by Ryosuke Niwa.
1428 This test is smaller, but has more realistic content. Also, it uses the "lang" attribute.
1430 * Layout/font-fallback-2.html: Added.
1431 * Layout/resources/font-fallback-2.html: Added.
1433 2015-07-13 Filip Pizlo <fpizlo@apple.com>
1435 Update JetStream version number to 1.1.
1437 Rubber stamped by Ryosuke Niwa.
1439 * JetStream/create.rb:
1441 2015-06-30 Filip Pizlo <fpizlo@apple.com>
1443 Update the JetStream documentation to reflect the recent changes
1444 https://bugs.webkit.org/show_bug.cgi?id=146474
1446 Reviewed by Geoffrey Garen.
1448 * JetStream/create.rb: Bump the version.
1449 * JetStream/in-depth-TEMPLATE.html: Add cdjs documentation. Remove cordic documentation. Change documentation for splay and mandreel.
1451 2015-06-26 Filip Pizlo <fpizlo@apple.com>
1453 [JetStream] Raise the percentile of mandreel-latency and splay-latency
1454 https://bugs.webkit.org/show_bug.cgi?id=146378
1456 Reviewed by Mark Lam.
1458 The current percentile is 95%. When I looked at the sample lists in our GC, it was
1459 clear that the worst 5% samples completely amortize our GC pauses. Our GC pauses can
1460 be quite bad. Clearly, splay-latency is meant to test whether we have an incremental
1461 GC that ensures that you don't have bad worst-case pauses. But 95% is too small,
1462 because it doesn't really capture those pauses. Raising the percentile to above 99%
1463 appears to do the trick. 99.5% or more seems like a good bet. The trade-off there is
1464 just that if we set it too high, then we won't have enough statistics. Doing this very
1465 clearly rewards GCs that are incremental, and punishes GCs that aren't (like ours).
1466 That's what we want, since in the future we want to use this test to guide any
1467 improvements to the worst-case performance of our GC.
1469 The way that the percentile is selected will also affect mandreel-latency. That's a
1470 good thing, because 95% is probably too low for that test as well. That test ends up
1471 with >10k samples. The goal of using 95% in the first place was to get enough samples
1472 to have a stable average. But if we have >10k samples, we can push that percentile up
1473 much higher and still get good statistics while achieving the effect we want - i.e.
1474 getting the worst case.
1476 I don't think that we need to do the same thing for cdjs. That test only takes 200
1477 samples, so 95% means we report the average of the worst 10 samples. That's probably
1480 * JetStream/Octane2/base.js: Raise the percentile as described above.
1481 (BenchmarkSuite.prototype.RunSingleBenchmark):
1482 * JetStream/Reference.js: Tweak the reference times to bring the latency tests closer to 100ish on my machine.
1483 * JetStream/create.rb: Bump the version.
1485 2015-06-19 Filip Pizlo <fpizlo@apple.com>
1487 Run CDjs as part of JSC stress testing
1488 https://bugs.webkit.org/show_bug.cgi?id=146174
1490 Reviewed by Geoffrey Garen.
1492 * JetStream/cdjs/cdjs-tests.yaml: Added. This tells JSC stress tests what tests to run. It uses new syntax ("tests" being a list) that I add in this change.
1493 * JetStream/cdjs/main.js: Mark this as a slow test.
1494 * JetStream/create.rb: Don't copy the JSC stress tests artifacts into the JetStream bundle.
1496 2015-06-19 Filip Pizlo <fpizlo@apple.com>
1498 Unreviewed, fix a small indentation goof.
1500 * JetStream/cdjs/motion.js:
1501 (Motion.prototype.findIntersection):
1503 2015-06-19 Filip Pizlo <fpizlo@apple.com>
1505 JetStream should include a JavaScript version of the CDx real-time benchmark
1506 https://bugs.webkit.org/show_bug.cgi?id=146156
1508 Reviewed by Geoffrey Garen.
1510 This adds a JavaScript port of the CDx real-time benchmark to JetStream, and retires
1511 the cordic test because it was previously the smallest and probably least interesting.
1513 The new test, "cdjs", is mostly a faithful rewrite of the Java code into JavaScript.
1514 I got the Java code from https://www.cs.purdue.edu/sss/projects/cdx/.
1516 There are some differences:
1518 - It uses RedBlackTree's for all sets and maps rather than hashtables. This is clearly
1519 more in the spirit of real-time than the CDx benchmark. FWIW, CDx used to use trees
1520 and I don't know why that changed in the latest version.
1522 - CDjs doesn't attempt to avoid memory allocations, unlike the real-time Java version.
1523 I wrote the code that I wanted to write for aesthetics, rather than the code that I
1524 would have written if I tried to write the fastest code possible. Again, I believe
1525 that this is in the spirit of CDj - it's meant to test what would happen if you wrote
1526 real-timey stuff in a high level language and actually took advantage of that
1527 language to be more productive.
1529 The test score reflects the average latency of the worst 10 samples out of 200 samples.
1530 The simulation uses 1000 aircraft, flying along paths that result in some detected
1531 collisions every once in a while. The benchmark validates its results by checking the
1532 total number of collisions detected.
1534 Apart from the integration into the JetStream harness, the CDjs directory contains a
1535 fully self-contained benchmark that could be run either in the jsc shell or in browser.
1537 This new code uses the same 3-clause BSD license as the Purdue code, and gives
1538 attribution to Purdue in almost all files. I believe that is appropriate since I wrote
1539 most of the JS files by looking at the Purdue Java code and trascribing to JavaScript.
1540 In some cases, I even copy-pasted the Java code, like the complicated math for
1541 four-dimensional intersections and voxel hashing.
1543 * JetStream/CDjsSetup.js: Added.
1544 * JetStream/Octane2Setup.js:
1545 * JetStream/Reference.js:
1546 * JetStream/cdjs: Added.
1547 * JetStream/cdjs/benchmark.js: Added.
1549 * JetStream/cdjs/call_sign.js: Added.
1551 (CallSign.prototype.compareTo):
1552 (CallSign.prototype.toString):
1553 * JetStream/cdjs/collision.js: Added.
1555 (Collision.prototype.toString):
1556 * JetStream/cdjs/collision_detector.js: Added.
1557 (CollisionDetector):
1558 (CollisionDetector.prototype.handleNewFrame.get for):
1559 (CollisionDetector.prototype.handleNewFrame):
1560 * JetStream/cdjs/constants.js: Added.
1561 * JetStream/cdjs/main.html: Added.
1562 * JetStream/cdjs/main.js: Added.
1563 * JetStream/cdjs/motion.js: Added.
1565 (Motion.prototype.toString):
1566 (Motion.prototype.delta):
1567 (Motion.prototype.findIntersection):
1568 * JetStream/cdjs/motion_test.js: Added.
1569 (checkDoesIntersect):
1570 (checkDoesNotIntersect):
1572 * JetStream/cdjs/red_black_tree.js: Added.
1575 * JetStream/cdjs/red_black_tree_test.js: Added.
1578 * JetStream/cdjs/reduce_collision_set.js: Added.
1579 (drawMotionOnVoxelMap):
1580 (drawMotionOnVoxelMap.):
1581 (.get reduceCollisionSet):
1582 * JetStream/cdjs/reduce_collision_set_test.js: Added.
1586 * JetStream/cdjs/simulator.js: Added.
1588 (Simulator.prototype.simulate):
1589 * JetStream/cdjs/util.js: Added.
1591 (averageAbovePercentile):
1594 * JetStream/cdjs/vector_2d.js: Added.
1596 (Vector2D.prototype.plus):
1597 (Vector2D.prototype.minus):
1598 (Vector2D.prototype.toString):
1599 (Vector2D.prototype.compareTo):
1600 * JetStream/cdjs/vector_3d.js: Added.
1602 (Vector3D.prototype.plus):
1603 (Vector3D.prototype.minus):
1604 (Vector3D.prototype.dot):
1605 (Vector3D.prototype.squaredMagnitude):
1606 (Vector3D.prototype.magnitude):
1607 (Vector3D.prototype.times):
1608 (Vector3D.prototype.as2D):
1609 (Vector3D.prototype.toString):
1610 * JetStream/create.rb:
1611 * JetStream/index-TEMPLATE.html:
1612 * JetStream/sunspider/cordic.js: Removed.
1614 2015-06-17 Javier Fernandez <jfernandez@igalia.com>
1616 [CSS Grid Layout] We should add performance tests for stretching logic
1617 https://bugs.webkit.org/show_bug.cgi?id=146063
1619 Reviewed by Sergio Villar Senin.
1621 Added a new performance test for Grid Layout to ensure there are no
1622 regressions in the stretching alignment logic.
1624 * Layout/fixed-grid-lots-of-stretched-data.html: Added.
1626 2015-06-17 Javier Fernandez <jfernandez@igalia.com>
1628 [CSS Grid Layout] Performance tests are using the old syntax
1629 https://bugs.webkit.org/show_bug.cgi?id=146061
1631 Reviewed by Sergio Villar Senin.
1633 Adapted tests to the new grid tracks definition syntax.
1635 * Layout/auto-grid-lots-of-data.html:
1636 * Layout/fixed-grid-lots-of-data.html:
1638 2015-06-08 Filip Pizlo <fpizlo@apple.com>
1640 JetStream should have a more rational story for jitter-oriented latency tests
1641 https://bugs.webkit.org/show_bug.cgi?id=145762
1643 Reviewed by Geoffrey Garen.
1645 JetStream has some latency tests that are meant to measure jitter. Prior to this change, they
1646 did this by computing the RMS. But the RMS is a pretty bad metric. The thing that it rewards
1647 isn't really the thing that you'd want your browser to do. These RMS-based tests involve taking
1648 the geomean of the RMS of some samples and the sample average. The lower the geomean, the better
1649 (in the JetStream harness we then invert the scores so that higher is better, but let's ignore
1650 that for this discussion and assume that lower is better). Here's an example of how this can go
1651 bad. A browser that always computes a task in some horribly long time (say, 1000ms) but never
1652 varies that time will perform better than a browser that usually computes the task super quickly
1653 (say, 10ms) and sometimes just a little bit less quickly (say, 15ms). The former browser will
1654 have an RMS of 0 and an average of 1000. The latter will have a RMS somewhere around 3.5 and an
1655 average of 12.5 (assuming equal probability of 10ms and 15ms). The geomean of (0, 1000) is 0.
1656 The geomean of (3.5, 12.5) is 6.6. Lower is better, so the former browser scores higher - even
1657 though it's obviously never better to have a browser always complete a task in 1000ms when a
1658 different browser can do it in 15ms in the worst case.
1660 JetStream should not have this pathology. The right way of avoiding it is to replace RMS with
1661 some other metric of how bad things get. A good metric is the average of the worst percentile.
1662 The worst 1% or the worst 5% would be good things to average. This will catch cases where the VM
1663 jittered due to JIT or GC, but it never have the pathology that we end up giving the better score
1664 to a VM whose best case is worst than another VM's worst case.
1666 For now, this change uses the highest samples above the 95% percentile. I'm not yet sure if that
1667 is the best thing - it might include too many scores that are around the best-case performance -
1668 but it's certainly better than RMS and it might be good enough to keep. But because of that
1669 uncertainty, I'm setting the version to be "1.1-alpha1" to indicate that we aren't ready to
1672 * JetStream/Octane2/base.js:
1673 (.this.Setup.setup.setup):
1674 (.this.TearDown.tearDown.tearDown):
1675 (BenchmarkSuite.GeometricMeanTime):
1676 (BenchmarkSuite.AverageAbovePercentile):
1677 (BenchmarkSuite.GeometricMeanLatency):
1678 (BenchmarkSuite.prototype.NotifyStep):
1679 (BenchmarkSuite.prototype.RunSingleBenchmark):
1680 * JetStream/Octane2/mandreel.js:
1682 (updateMandreelStats):
1683 (startMandreelTimer):
1686 (RMSMandreel): Deleted.
1687 * JetStream/Octane2/splay.js:
1692 (SplayRMS): Deleted.
1693 * JetStream/create.rb:
1695 2015-06-03 Zalan Bujtas <zalan@apple.com>
1697 Skip Dromaeo/jslib-modify-prototype.html for now.
1699 Unreviewed gardening.
1703 2015-05-04 Filip Pizlo <fpizlo@apple.com>
1705 Large array shouldn't be slow
1706 https://bugs.webkit.org/show_bug.cgi?id=144617
1708 Reviewed by Geoffrey Garen.
1710 Add the hash-map benchmark to LongSpider. LongSpider was already not a perfect match of
1711 SunSpider. It's not an official benchmark. It contains benchmarks that are relatively
1712 long-running. So, hash-map sort of belongs here.
1714 * LongSpider/hash-map.js: Added.
1719 2015-05-01 Dewei Zhu <dewei_zhu@apple.com>
1721 Fix typo bug in Speedometer/resources/main.js
1722 https://bugs.webkit.org/show_bug.cgi?id=144504
1724 Reviewed by Ryosuke Niwa.
1726 * Speedometer/resources/main.js: Fix typo.
1727 (window.benchmarkClient.totalTimeInDisplayUnit):
1729 2015-04-21 Ryosuke Niwa <rniwa@webkit.org>
1731 Add JetStream to PerformanceTests
1732 https://bugs.webkit.org/show_bug.cgi?id=144024
1734 Rubber-stamped by Filip Pizlo.
1737 * JetStream/JetStream-Logo.png: Added.
1738 * JetStream/JetStream-Logo@2x.png: Added.
1739 * JetStream/JetStream.css: Added.
1740 * JetStream/JetStreamDriver.js: Added.
1741 * JetStream/LICENSE.txt: Added.
1742 * JetStream/LLVM-test-suite-LICENSE.txt: Added.
1743 * JetStream/Octane: Added.
1744 * JetStream/Octane/base.js: Added.
1745 * JetStream/Octane/code-load.js: Added.
1746 * JetStream/Octane2: Added.
1747 * JetStream/Octane2/base.js: Added.
1748 * JetStream/Octane2/box2d.js: Added.
1749 * JetStream/Octane2/code-load.js: Added.
1750 * JetStream/Octane2/crypto.js: Added.
1751 * JetStream/Octane2/deltablue.js: Added.
1752 * JetStream/Octane2/earley-boyer.js: Added.
1753 * JetStream/Octane2/gbemu-part1.js: Added.
1754 * JetStream/Octane2/gbemu-part2.js: Added.
1755 * JetStream/Octane2/mandreel.js: Added.
1756 * JetStream/Octane2/navier-stokes.js: Added.
1757 * JetStream/Octane2/pdfjs.js: Added.
1758 * JetStream/Octane2/raytrace.js: Added.
1759 * JetStream/Octane2/regexp.js: Added.
1760 * JetStream/Octane2/richards.js: Added.
1761 * JetStream/Octane2/run.js: Added.
1762 * JetStream/Octane2/splay.js: Added.
1763 * JetStream/Octane2/typescript-compiler.js: Added.
1764 * JetStream/Octane2/typescript-input.js: Added.
1765 * JetStream/Octane2/typescript.js: Added.
1766 * JetStream/Octane2/zlib-data.js: Added.
1767 * JetStream/Octane2/zlib.js: Added.
1768 * JetStream/Octane2Setup.js: Added.
1769 * JetStream/OctaneSetup.js: Added.
1770 * JetStream/README: Added.
1771 * JetStream/Reference.js: Added.
1772 * JetStream/SimpleSetup.js: Added.
1773 * JetStream/SunSpiderSetup.js: Added.
1774 * JetStream/Swoosh.png: Added.
1775 * JetStream/Swoosh@2x.png: Added.
1776 * JetStream/TestingSetup.js: Added.
1777 * JetStream/create.rb: Added.
1778 * JetStream/docs: Added.
1779 * JetStream/docs/JetStreamBlogPost.html: Added.
1780 * JetStream/in-depth-TEMPLATE.html: Added.
1781 * JetStream/index-TEMPLATE.html: Added.
1782 * JetStream/simple: Added.
1783 * JetStream/simple/bigfib.cpp: Added.
1784 * JetStream/simple/bigfib.cpp.js: Added.
1785 * JetStream/simple/container.cpp: Added.
1786 * JetStream/simple/container.cpp.js: Added.
1787 * JetStream/simple/dry.c: Added.
1788 * JetStream/simple/dry.c.js: Added.
1789 * JetStream/simple/float-mm.c: Added.
1790 * JetStream/simple/float-mm.c.js: Added.
1791 * JetStream/simple/gcc-loops.cpp: Added.
1792 * JetStream/simple/gcc-loops.cpp.js: Added.
1793 * JetStream/simple/hash-map.js: Added.
1794 * JetStream/simple/n-body.c: Added.
1795 * JetStream/simple/n-body.c.js: Added.
1796 * JetStream/simple/quicksort.c: Added.
1797 * JetStream/simple/quicksort.c.js: Added.
1798 * JetStream/simple/towers.c: Added.
1799 * JetStream/simple/towers.c.js: Added.
1800 * JetStream/sunspider: Added.
1801 * JetStream/sunspider/3d-cube.js: Added.
1802 * JetStream/sunspider/3d-raytrace.js: Added.
1803 * JetStream/sunspider/base64.js: Added.
1804 * JetStream/sunspider/cordic.js: Added.
1805 * JetStream/sunspider/crypto-aes.js: Added.
1806 * JetStream/sunspider/crypto-md5.js: Added.
1807 * JetStream/sunspider/crypto-sha1.js: Added.
1808 * JetStream/sunspider/date-format-tofte.js: Added.
1809 * JetStream/sunspider/date-format-xparb.js: Added.
1810 * JetStream/sunspider/n-body.js: Added.
1811 * JetStream/sunspider/regex-dna.js: Added.
1812 * JetStream/sunspider/tagcloud.js: Added.
1814 2015-04-14 Said Abou-Hallawa <sabouhallawa@apple.com>
1816 textPath layout performance improvement.
1817 https://bugs.webkit.org/show_bug.cgi?id=141570.
1819 Reviewed by Darin Adler.
1821 Cut down the time spent in traversing the path for text by 50%. Instead
1822 of traversing the path twice at a certain length: one time for the position
1823 and the second time for the angle, we can merge these two passes into one.
1825 * SVG/TextOnPathSimple.html: Added.
1826 * SVG/resources/TextOnPathSimple.svg: Added.
1828 2015-04-13 Zalan Bujtas <zalan@apple.com>
1830 Clear up the test content when test is done.
1834 * Layout/simple-line-layout-innertext.html:
1836 2015-04-09 Zalan Bujtas <zalan@apple.com>
1838 Simple line layout(regression): Calling innerText on RenderFlow with multiple children is slow.
1839 https://bugs.webkit.org/show_bug.cgi?id=143554
1841 Reviewed by Antti Koivisto.
1843 Initialize render flow's segments only when the render flow changes in TextIterator.
1844 The included performance test shows 6x speedup. (from ~10 runs/sec to ~60 runs/sec)
1846 * Layout/simple-line-layout-innertext.html: Added.
1848 2015-03-09 Chris Dumez <cdumez@apple.com>
1850 [CG] Have Canvas use the IOSurfacePool
1851 https://bugs.webkit.org/show_bug.cgi?id=142417
1852 <rdar://problem/20044440>
1854 Reviewed by Darin Adler.
1856 Lower the number of different canvas sizes from 1000 to 100 so that
1857 the test does not require such a huge cache size. With 100, we now
1858 get over 90% cache hit rate with the default IOSurfacePool size.
1860 * Canvas/reuse.html:
1862 2015-01-28 Said Abou-Hallawa <sabouhallawa@apple.com>
1864 Poor performance on IE's Chalkboard benchmark.
1865 https://bugs.webkit.org/show_bug.cgi?id=140753.
1867 Reviewed by Zalan Bujtas.
1869 * SVG/UnderTheSeeBenchmark.html: Added
1870 * SVG/WorldcupBenchmark.html: Added.
1871 * SVG/resources/RenderAnimator.css: Added.
1872 * SVG/resources/RenderAnimator.js: Added.
1873 These are benchmarks for the SVG rendering. Mainly we want to measure how fast
1874 the SVG rendering will be when only a small part of it is drawn.
1876 2015-01-21 Geoffrey Garen <ggaren@apple.com>
1878 bmalloc: support aligned allocation
1879 https://bugs.webkit.org/show_bug.cgi?id=140732
1881 Reviewed by Andreas Kling.
1883 * MallocBench/MallocBench.xcodeproj/project.pbxproj:
1884 * MallocBench/MallocBench/Benchmark.cpp:
1885 * MallocBench/MallocBench/memalign.cpp:
1887 (benchmark_memalign): Added a test for specific interesting memalign values.
1889 * MallocBench/MallocBench/stress_aligned.cpp: Added.
1890 (benchmark_stress_aligned):
1891 * MallocBench/MallocBench/stress_aligned.h: Added. Added a stress test
1892 for arbitrary memalign values.
1894 2015-01-16 Geoffrey Garen <ggaren@apple.com>
1896 bmalloc: added the tiniest bit of testing for aligned allocation
1897 https://bugs.webkit.org/show_bug.cgi?id=140573
1899 Reviewed by Andreas Kling.
1901 Just good enoug to catch two bugs in a preliminary implementation.
1903 * MallocBench/MallocBench.xcodeproj/project.pbxproj:
1904 * MallocBench/MallocBench/Benchmark.cpp:
1905 * MallocBench/MallocBench/mbmalloc.cpp:
1906 * MallocBench/MallocBench/mbmalloc.h:
1907 * MallocBench/MallocBench/memalign.cpp: Added.
1908 (benchmark_memalign):
1909 * MallocBench/MallocBench/memalign.h: Added.
1911 2014-12-09 Myles C. Maxfield <mmaxfield@apple.com>
1913 Add performance test related to font fallback
1914 https://bugs.webkit.org/show_bug.cgi?id=139332
1916 Reviewed by Simon Fraser.
1918 * Layout/font-fallback.html: Added.
1919 * Layout/resources/font-fallback.html: Added.
1921 2014-12-08 Dean Jackson <dino@apple.com>
1923 [Apple] Use Accelerate framework to speed-up FEGaussianBlur
1924 https://bugs.webkit.org/show_bug.cgi?id=139310
1926 Reviewed by Simon Fraser.
1928 Add an interactive performance test that measures the speed of a set
1929 of blur operations on a generated images.
1931 * Interactive/blur-filter-timing.html: Added.
1933 2014-11-13 Zalan Bujtas <zalan@apple.com>
1935 Simple line layout: Add performance test case to measure line layout speed of monolithic text content.
1936 https://bugs.webkit.org/show_bug.cgi?id=138699
1938 Reviewed by Antti Koivisto.
1940 * Layout/line-layout-long-long-text.html: Added.
1942 2014-10-22 Zalan Bujtas <zalan@apple.com>
1944 Speed up line parsing for simple line layout (part I)
1945 https://bugs.webkit.org/show_bug.cgi?id=137275
1947 Reviewed by Antti Koivisto.
1949 Extend simple line layout performance test with a few more cases.
1954 <div white-space: pre (new)
1955 <div overflow-wrap: break-word (new)
1957 <pre white-space: pre-wrap
1958 <pre white-space: pre-line (new)
1959 <pre white-space: nowrap (new)
1960 <pre white-space: pre-wrap overflow-wrap: break-word
1961 <div + embedded <span etc.
1964 * Layout/line-layout-simple.html:
1966 2014-10-15 Andrei Bucur <abucur@adobe.com>
1968 [Multicol] Start adding performance tests for the multi-column implementation
1969 https://bugs.webkit.org/show_bug.cgi?id=137687
1971 Reviewed by Mihnea Ovidenie.
1973 This patch creates a Multicol folder inside the Layout performance tests suite. It adds only two tests
1976 The tests are skipped until the implementation stabilizes.
1978 * Layout/Multicol/MulticolManyColumns.html: Added.
1979 This test verifies the performance of the multi-column implementation with two nested multi-column
1980 containers, the first having 20 columns and the second 10 columns.
1982 * Layout/Multicol/MulticolNested.html: Added.
1983 This test verifies the performance of nesting multi-column containers in the presence
1986 * Layout/Multicol/resources/multicol-content-many-columns.html: Added.
1987 * Layout/Multicol/resources/multicol-content-nested.html: Added.
1988 * Skipped: Skip the Multicol folder for now.
1990 2014-09-29 Filip Pizlo <fpizlo@apple.com>
1992 It should be fun and easy to run every possible JavaScript benchmark from the command line
1993 https://bugs.webkit.org/show_bug.cgi?id=137245
1995 Reviewed by Oliver Hunt.
1997 This adds the scaffolding for running Octane version 2 inside run-jsc-benchmarks.
1998 In the future we should just land Octane2 in this directory, and run-jsc-benchmarks
1999 should be changed to point directly at this directory instead of requiring the
2000 Octane path to be configured as part of the configuration file.
2003 * Octane/wrappers: Added.
2004 * Octane/wrappers/jsc-box2d.js: Added.
2008 * Octane/wrappers/jsc-boyer.js: Added.
2012 * Octane/wrappers/jsc-closure.js: Added.
2016 * Octane/wrappers/jsc-decrypt.js: Added.
2020 * Octane/wrappers/jsc-deltablue.js: Added.
2024 * Octane/wrappers/jsc-earley.js: Added.
2028 * Octane/wrappers/jsc-encrypt.js: Added.
2032 * Octane/wrappers/jsc-gbemu.js: Added.
2036 * Octane/wrappers/jsc-jquery.js: Added.
2040 * Octane/wrappers/jsc-mandreel.js: Added.
2044 * Octane/wrappers/jsc-navier-stokes.js: Added.
2048 * Octane/wrappers/jsc-pdfjs.js: Added.
2049 (jscSetUp.PdfJS_window.console.log):
2053 * Octane/wrappers/jsc-raytrace.js: Added.
2057 * Octane/wrappers/jsc-regexp.js: Added.
2061 * Octane/wrappers/jsc-richards.js: Added.
2065 * Octane/wrappers/jsc-splay.js: Added.
2069 * Octane/wrappers/jsc-typescript.js: Added.
2073 * Octane/wrappers/jsc-zlib.js: Added.
2078 2014-09-28 Sungmann Cho <sungmann.cho@navercorp.com>
2080 Fix some minor typos: psuedo -> pseudo
2081 https://bugs.webkit.org/show_bug.cgi?id=137192
2083 Reviewed by Alexey Proskuryakov.
2085 * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:
2087 2014-09-11 Geoffrey Garen <ggaren@apple.com>
2089 Some MallocBench refinements
2090 https://bugs.webkit.org/show_bug.cgi?id=136750
2092 Reviewed by Sam Weinig.
2094 * MallocBench/MallocBench/Interpreter.cpp:
2095 (Interpreter::run): Allow for null entries in the object list so that
2096 we can test in modes that exclude large or small allocations.
2098 * MallocBench/MallocBench/churn.cpp:
2100 * MallocBench/MallocBench/flickr.cpp:
2102 * MallocBench/MallocBench/fragment.cpp:
2103 (benchmark_fragment_iterate):
2104 * MallocBench/MallocBench/list.cpp:
2105 (benchmark_list_allocate):
2106 * MallocBench/MallocBench/reddit.cpp:
2107 (benchmark_reddit): Updated test runtimes to weight them more equally,
2108 for the sake of arithmetic mean.
2110 * MallocBench/MallocBench/stress.cpp:
2114 (benchmark_stress): Verify the contents of memory as we go. Also,
2115 force scavenging each time through the loop to test the scavenging path.
2117 * MallocBench/MallocBench/theverge.cpp:
2118 (benchmark_theverge):
2119 * MallocBench/MallocBench/tree.cpp:
2120 (benchmark_tree_churn): Re-weighted, as above.
2122 2014-09-08 Myles C. Maxfield <mmaxfield@apple.com>
2124 PerformanceTests/SVG/SVG-Text.html has unparsable output
2125 https://bugs.webkit.org/show_bug.cgi?id=136648
2127 Reviewed by Gavin Barraclough.
2129 I need to clean up the arbitrary text on the page before telling
2130 the test runner infrastructure that the test is complete.
2132 * SVG/SVG-Text.html:
2134 2014-09-05 Myles C. Maxfield <mmaxfield@apple.com>
2136 Laying out a TextRun using an SVG font is O(n^2)
2137 https://bugs.webkit.org/show_bug.cgi?id=136584
2139 Reviewed by Andreas Kling.
2141 Time how long it takes to lay out and render some text using an SVG font.
2143 * SVG/SVG-Text.html: Added.
2144 * SVG/resources/graffiti.svg: Added.
2146 2014-09-02 Geoffrey Garen <ggaren@apple.com>
2148 MallocBench should have a stress test for correctness
2149 https://bugs.webkit.org/show_bug.cgi?id=136468
2151 Reviewed by Andreas Kling.
2153 Added a stress test that allocates randomized sizes of randomized
2154 lifetimes in randomized order.
2156 This version of the test reproduces the EWS crash seen in bmalloc
2157 (<https://bugs.webkit.org/show_bug.cgi?id=132629>).
2159 * MallocBench/MallocBench.xcodeproj/project.pbxproj:
2160 * MallocBench/MallocBench/Benchmark.cpp: Sort!
2161 * MallocBench/MallocBench/stress.cpp: Added.
2163 (SizeStream::SizeStream):
2165 (benchmark_stress): Usually, we random(0). Surprisingly, though, only
2166 random(1) reproduces the bug I was looking for.
2167 * MallocBench/MallocBench/stress.h: Added.
2169 2014-06-02 Ryosuke Niwa <rniwa@webkit.org>
2171 Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
2172 https://bugs.webkit.org/show_bug.cgi?id=133455
2174 Reviewed by Timothy Hatcher.
2176 * Speedometer/: Renamed from DoYouEvenBench.
2177 * Skipped: Updated the path for InteractiveRunner.html
2179 2014-06-02 Ryosuke Niwa <rniwa@webkit.org>
2181 Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
2182 https://bugs.webkit.org/show_bug.cgi?id=133455
2184 Reviewed by Timothy Hatcher.
2186 Renamed the benchmark to Speedometer and added the new look designed by Timothy Hatcher.
2188 Also changed the unit of measurements from milliseconds to runs-per-minute averaged over the number
2189 of the benchmark suites (7 for 1.0). You can divide 420000 by the old benchmark score (in milliseconds)
2190 to get the new value for the set of tests that are enabled by default in 1.0. You can continue to see
2191 results in milliseconds on Full.html#ms.
2193 * DoYouEvenBench/Full.html: Added a bunch of sections and the description of the benchmark.
2195 * DoYouEvenBench/resources/benchmark-report.js: Remove the newly added content when ran inside a DRT or
2196 WTR so that run-perf-tests wouldn't error.
2197 * DoYouEvenBench/resources/benchmark-runner.js:
2198 (BenchmarkRunner.prototype._appendFrame): Call a newly added willAddTestFrame callback when it exists.
2200 * DoYouEvenBench/resources/gauge.png: Added.
2201 * DoYouEvenBench/resources/gauge@2x.png: Added.
2202 * DoYouEvenBench/resources/logo.png: Added.
2203 * DoYouEvenBench/resources/logo@2x.png: Added.
2204 * DoYouEvenBench/resources/main.css: Replaced the style.
2206 * DoYouEvenBench/resources/main.js:
2207 (window.benchmarkClient.willAddTestFrame): Place the iframe right where #testContainer is shown.
2208 (window.benchmarkClient.willRunTest): Show the name of the suite (e.g. EmberJS-TodoMVC) to run next.
2209 (window.benchmarkClient.didRunSuites):
2210 (window.benchmarkClient.willStartFirstIteration): Initialize _timeValues and _finishedTestCount now that
2211 we have an UI to run the benchmark multiple times without reloading the page.
2212 (window.benchmarkClient.didFinishLastIteration): Split into smaller pieces.
2213 (window.benchmarkClient._computeResults): Computes the mean and the statistics for the given time values,
2214 and also format them in a human readable form.
2215 (window.benchmarkClient._computeResults.totalTimeInDisplayUnit): Converts ms to runs/min.
2216 (window.benchmarkClient._computeResults.sigFigFromPercentDelta): Given a percentage error (e.g. 1%),
2217 returns the number of significant digits required for the mean.
2218 (window.benchmarkClient._computeResults.toSigFigPrecision): Calls toPrecision with the specified precision
2219 constrained to be at least the number of non-decimal digits and at most 6.
2220 (window.benchmarkClient._addDetailedResultsRow): Renamed from _addResult. It now takes the table to which
2221 to add a row and the iteration number.
2222 (window.benchmarkClient._updateGaugeNeedle): Added. Controls the angle of the speed indicator.
2223 (window.benchmarkClient._populateDetailedResults): Added.
2224 (window.benchmarkClient.prepareUI): Added. It adds an event listener to show a specified section when
2225 the push state of the document changes, and shows a warning sign when the view port size is too small.
2226 We do this inside a callback to avoid running it inside DRT / WTR.
2228 (showSection): Added.
2230 (showResultsSummary): Added.
2231 (showResultDetails): Added.
2234 2014-06-01 Ryosuke Niwa <rniwa@webkit.org>
2236 DYEBench: Move test states into benchmarkClient and remove the closure
2237 https://bugs.webkit.org/show_bug.cgi?id=133438
2239 Reviewed by Benjamin Poulain.
2241 Moved all local variables in the closure wrapping benchmarkClient onto the object itself
2242 and removed the closure to improve the readability of the code.
2244 * DoYouEvenBench/Full.html:
2245 * DoYouEvenBench/resources/main.js:
2246 (window.benchmarkClient.willRunTest):
2247 (window.benchmarkClient.didRunTest):
2248 (window.benchmarkClient.didRunSuites):
2249 (window.benchmarkClient.willStartFirstIteration):
2250 (window.benchmarkClient.didFinishLastIteration):
2251 (window.benchmarkClient._addResult): Moved.
2254 2014-06-01 Ryosuke Niwa <rniwa@webkit.org>
2256 DYEBench: Split stylesheets and scripts in Full.html into separate files
2257 https://bugs.webkit.org/show_bug.cgi?id=133437
2259 Reviewed by Benjamin Poulain.
2261 Extracted main.js and main.css.
2263 Also fixed a bug in startBenchmark that disabled suites were counted towards the total number of tests.
2265 * DoYouEvenBench/Full.html:
2266 * DoYouEvenBench/resources/main.css: Added.
2267 * DoYouEvenBench/resources/main.js: Added.
2269 (window.benchmarkClient):
2270 (startBenchmark): Renamed from startTest.
2272 2014-06-01 Ryosuke Niwa <rniwa@webkit.org>
2274 DYEBench: CSS parser warning at line 106 of base.css
2275 https://bugs.webkit.org/show_bug.cgi?id=133433
2277 Reviewed by Maciej Stachowiak.
2279 Removed the old filter CSS property for Internet Explorer. The latest Internet Explorer supports -ms-linear-gradient
2280 on background CSS property anyways.
2282 It's interesting that some of the tests only have -webkit- prefixes. Perhaps we should update those subtests.
2284 * DoYouEvenBench/Full.html:
2285 * DoYouEvenBench/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css:
2287 * DoYouEvenBench/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css:
2289 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
2291 * DoYouEvenBench/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css:
2293 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css:
2295 * DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css:
2297 * DoYouEvenBench/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css:
2300 2014-05-31 Ryosuke Niwa <rniwa@webkit.org>
2302 DYEBench: Ember.js assertion hit at line 20593
2303 https://bugs.webkit.org/show_bug.cgi?id=133431
2305 Reviewed by Darin Adler.
2307 The assertion was hit because ToDoMVC includes jQuery 2.1 and Ember.js 1.3.1 only recognizes jQuery 2.0.
2308 Port the assertion from Ember.js 1.5.1 to suppress the assertion.
2310 We should update the entire Ember.js at some point but this would do the job for now.
2312 * DoYouEvenBench/Full.html:
2313 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:
2315 2014-05-31 Ryosuke Niwa <rniwa@webkit.org>
2317 DYEBench: Prevent frame flattening on iOS
2318 https://bugs.webkit.org/show_bug.cgi?id=133428
2320 Reviewed by Andreas Kling.
2322 Prevent frame flattening on iOS by setting scrolling=no.
2324 * DoYouEvenBench/Full.html:
2325 * DoYouEvenBench/resources/benchmark-runner.js:
2326 (BenchmarkRunner.prototype._appendFrame):
2328 2014-05-30 Ryosuke Niwa <rniwa@webkit.org>
2330 DYEBench spits out 404 errors for learn.json
2331 https://bugs.webkit.org/show_bug.cgi?id=133416
2333 Reviewed by Oliver Hunt.
2335 Add an empty learn.json file so that it won't cause a 404 error when hosted on a http server.
2337 Bumped the version number to 0.12.
2339 * DoYouEvenBench/Full.html:
2340 * DoYouEvenBench/resources/todomvc/learn.json:
2342 2014-05-23 Geoffrey Garen <ggaren@apple.com>
2344 Performance testing, diamond-square terrain generation + canvas
2345 https://bugs.webkit.org/show_bug.cgi?id=133054
2347 Reviewed by Ryosuke Niwa.
2349 This test was written by Hunter Loftis. It originally appeared on his
2350 blog @ <http://www.playfuljs.com/realistic-terrain-in-130-lines/>.
2352 I did a bit of editing for format and benchmark suitability.
2354 * Canvas/terrain.html: Added.
2356 2014-05-13 Ryosuke Niwa <rniwa@webkit.org>
2358 DYEBench should run 20 iterations in browser
2359 https://bugs.webkit.org/show_bug.cgi?id=132795
2361 Reviewed by Gavin Barraclough.
2363 Right now, run-perf-tests runs BYEBench 4 times with different instances of DRT/WTR to get
2364 a more stable time and account for differences in the runtime environment, particularly,
2365 ASLR (Address Space Layout Randomization).
2367 While we can't account for the latter effect when the benchmark is ran inside a browser,
2368 we can at least run 20 iterations to get a more stable (but perhaps biased by ALSR) number.
2370 While the sample size of 20 is statistically unsound to compute the arithmetic mean from,
2371 it's MUCH better than the current sample size of 5.
2373 * DoYouEvenBench/Full.html:
2374 (benchmarkClient.iterationCount): Set the default iteration count to 20.
2375 (startTest): Use benchmarkClient.iterationCount as the iteration count.
2376 * DoYouEvenBench/resources/benchmark-report.js:
2377 (benchmarkClient.iterationCount): Continue to use the old iteration count of 5 when ran
2378 inside run-perf-tests.
2380 2014-05-09 Ryosuke Niwa <rniwa@webkit.org>
2382 DYEBench should show 95th percentile right next to the mean with ±
2383 https://bugs.webkit.org/show_bug.cgi?id=132729
2385 Reviewed by Darin Adler.
2387 Before this patch, Full.html showed the 95th percentile delta for the arthemtic mean in a separate row
2388 but this was confusing for some people. Show it right next to mean in the same row separated by ±.
2390 * DoYouEvenBench/Full.html:
2392 2014-05-08 Ryosuke Niwa <rniwa@webkit.org>
2394 DYEBench should use TodoMVC to test FlightJS for consistency
2395 https://bugs.webkit.org/show_bug.cgi?id=132727
2397 Reviewed by Andreas Kling.
2399 Add a test suite for the FlightJS version of TodoMVC, and disable FlightJS-MailClient by default.
2401 I initially intended to include a wider variety of demo apps in DYEBench
2402 but that's not happening any time soon so let us use TodoMVC for all frameworks for now.
2404 We can add more demo apps in v2.
2406 * DoYouEvenBench/Full.html: Increment the version to 0.10.
2407 * DoYouEvenBench/InteractiveRunner.html: Don't check disabled suites by default.
2408 * DoYouEvenBench/resources/tests.js:
2409 * DoYouEvenBench/resources/todomvc/dependency-examples: Added.
2410 * DoYouEvenBench/resources/todomvc/dependency-examples/flight: Added.
2411 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/.gitignore: Added.
2412 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/.jshintrc: Added.
2413 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app: Added.
2414 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js: Added.
2415 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/app.js: Added.
2416 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data: Added.
2417 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/stats.js: Added.
2418 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/todos.js: Added.
2419 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/main.js: Added.
2420 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/store.js: Added.
2421 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui: Added.
2422 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/main_selector.js: Added.
2423 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/new_item.js: Added.
2424 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/stats.js: Added.
2425 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/todo_list.js: Added.
2426 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/toggle_all.js: Added.
2427 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/with_filters.js: Added.
2428 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/utils.js: Added.
2429 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates: Added.
2430 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/stats.html: Added.
2431 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/todo.html: Added.
2432 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower.json: Added.
2433 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components: Added.
2434 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot: Added.
2435 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot/depot.js: Added.
2436 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim: Added.
2437 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-sham.js: Added.
2438 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-shim.js: Added.
2439 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight: Added.
2440 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib: Added.
2441 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/advice.js: Added.
2442 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/base.js: Added.
2443 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/component.js: Added.
2444 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/compose.js: Added.
2445 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/debug.js: Added.
2446 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/index.js: Added.
2447 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/logger.js: Added.
2448 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/registry.js: Added.
2449 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/utils.js: Added.
2450 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery: Added.
2451 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery/jquery.js: Added.
2452 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs: Added.
2453 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text: Added.
2454 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text/text.js: Added.
2455 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs/require.js: Added.
2456 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common: Added.
2457 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css: Added.
2458 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.js: Added.
2459 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/bg.png: Added.
2460 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/index.html: Added.
2461 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/karma.conf.js: Added.
2462 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/package.json: Added.
2463 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/readme.md: Added.
2464 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test: Added.
2465 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/.jshintrc: Added.
2466 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture: Added.
2467 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/footer.html: Added.
2468 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/new_todo.html: Added.
2469 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/toggle_all.html: Added.
2470 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock: Added.
2471 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock/datastore.js: Added.
2472 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec: Added.
2473 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data: Added.
2474 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/stats_spec.js: Added.
2475 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/todos_spec.js: Added.
2476 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui: Added.
2477 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/new_item_spec.js: Added.
2478 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/stats_spec.js: Added.
2479 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/toggle_all_spec.js: Added.
2480 * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/test-main.js: Added.
2482 2014-05-07 Manuel Rego Casasnovas <rego@igalia.com>
2484 [CSS Grid Layout] Remove runtime feature
2485 https://bugs.webkit.org/show_bug.cgi?id=132382
2487 Reviewed by Benjamin Poulain.
2489 Remove set of WebKitCSSGridLayoutEnabled preference.
2491 * Layout/auto-grid-lots-of-data.html:
2492 * Layout/fixed-grid-lots-of-data.html:
2494 2014-05-06 Radu Stavila <stavila@adobe.com>
2496 [CSSRegions] Enabled regions performance tests by default
2497 https://bugs.webkit.org/show_bug.cgi?id=128244
2499 Reviewed by Andreas Kling.
2501 Enabled regions performance tests.
2505 2014-04-25 Andreas Kling <akling@apple.com>
2507 Bump jQuery to same version that dromaeo.com uses.
2509 Rubber-stamped by Ryosuke Niwa.
2511 * Dromaeo/resources/dromaeo/web/lib/jquery-1.10.2.min.js: Added.
2512 * Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html:
2513 * Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html:
2514 * Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html:
2515 * Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html:
2516 * Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html:
2517 * Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html:
2519 2014-04-18 Geoffrey Garen <ggaren@apple.com>
2521 Added some more Membuster recordings to MallocBench
2522 https://bugs.webkit.org/show_bug.cgi?id=131862
2524 Reviewed by Sam Weinig.
2526 * MallocBench/MallocBench/Benchmark.cpp:
2527 (Benchmark::Benchmark):
2529 * MallocBench/MallocBench/Benchmark.h:
2530 * MallocBench/MallocBench/CommandLine.cpp:
2531 * MallocBench/MallocBench/CommandLine.h:
2532 (CommandLine::runs): Added a --runs option, so we can specify zero runs
2533 for memory warning benchmarks. Those benchmarks want zero runs so that
2534 they can perform a single warmup, which does not free all allocated
2535 objects, and then see how far back to 0MB they can get. Running multiple
2536 times would accumulate leaks, which is not representative of the
2539 * MallocBench/MallocBench/Interpreter.cpp:
2540 (Interpreter::Interpreter):
2542 * MallocBench/MallocBench/Interpreter.h: Support not deallocating all
2543 objects allocated during the recording, so we can do low memory warning
2544 memory use measurements, as above.
2546 * MallocBench/MallocBench/flickr.cpp:
2547 (benchmark_flickr_memory_warning):
2548 * MallocBench/MallocBench/main.cpp:
2550 * MallocBench/MallocBench/reddit.cpp:
2551 (benchmark_reddit_memory_warning):
2552 * MallocBench/MallocBench/theverge.cpp:
2553 (benchmark_theverge_memory_warning): Adopt the API above.
2555 * MallocBench/run-malloc-benchmarks: I took a first pass at listing all
2556 available benchmarks here. Then I commented out the benchmarks that
2557 probably aren't reasonable to run by default.
2559 2014-04-18 Geoffrey Garen <ggaren@apple.com>
2561 MallocBench: removed the --measure-heap option
2562 https://bugs.webkit.org/show_bug.cgi?id=131854
2564 Reviewed by Sam Weinig.
2566 As of <https://bugs.webkit.org/show_bug.cgi?id=131661>, measuring the
2567 heap is fast, so there's no reason to disable it.
2569 * MallocBench/MallocBench/Benchmark.cpp:
2570 (Benchmark::Benchmark):
2572 (Benchmark::printReport):
2573 * MallocBench/MallocBench/Benchmark.h:
2574 * MallocBench/MallocBench/CommandLine.cpp:
2575 (CommandLine::printUsage):
2576 * MallocBench/MallocBench/CommandLine.h:
2577 (CommandLine::heapSize):
2578 (CommandLine::measureHeap): Deleted.
2579 * MallocBench/MallocBench/main.cpp:
2582 2014-04-16 Alexandru Chiculita <achicu@adobe.com>
2584 Improve performance of the RenderLayerCompositor::OverlapMap
2585 https://bugs.webkit.org/show_bug.cgi?id=115063
2587 Reviewed by Simon Fraser.
2589 Testing the performance of computing the overlap of 5000 layers.
2591 * Layout/layers_overlap_2d.html: Added. Using non-composited layers, to check
2592 that the performance on the non-composited path is not changing with this patch.
2593 * Layout/layers_overlap_3d.html: Added. Records the time to do the layout of 5000
2594 non-overlapping 3D layers.
2596 2014-04-15 Zoltan Horvath <zoltan@webkit.org>
2598 [CSS Shapes] Linking stylesheet instead of inline style definition has ruined ShapesRegions test
2599 https://bugs.webkit.org/show_bug.cgi?id=131572
2601 Reviewed by Rob Buis.
2603 In r167022 I moved the common CSS selectors into RegionsShapes.css, then I linked it into the perf test
2604 files, but the measurement results dropped down from about 400ms to 10ms. I realized it's caused by the
2605 linked css rule, so I've put the selectors back into every test case, which fixes the test measurements.
2607 * Layout/Shapes/resources/RegionsShapes.css: Removed.
2608 * Layout/Shapes/resources/RegionsShapesContent.html:
2609 * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html:
2610 * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html:
2611 * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html:
2612 * Layout/Shapes/resources/RegionsShapesContentNoShapes.html:
2614 2014-04-14 Geoffrey Garen <ggaren@apple.com>
2616 MallocBench should scavenge explicitly instead of waiting
2617 https://bugs.webkit.org/show_bug.cgi?id=131661
2619 Reviewed by Andreas Kling.
2621 * MallocBench/MallocBench.xcodeproj/project.pbxproj: Don't build mbmalloc
2622 by default because it will overwrite any other mbmalloc you're working
2623 with in the WebKitBuild directory.
2625 * MallocBench/MallocBench/Benchmark.cpp:
2626 (Benchmark::run): Scavenge explicitly instead of waiting. This is faster,
2627 and it's the only way to get FastMalloc to scavenge. (That's a bug in
2628 FastMalloc, but we don't want it to interfere with broader testing.)
2630 * MallocBench/MallocBench/mbmalloc.cpp:
2631 * MallocBench/MallocBench/mbmalloc.h: Added a scavenge implementation
2634 2014-04-14 Geoffrey Garen <ggaren@apple.com>
2636 A few MallocBench record/replay fixes
2637 https://bugs.webkit.org/show_bug.cgi?id=131627
2639 Reviewed by Andreas Kling.
2641 * MallocBench/MallocBench/Interpreter.cpp:
2642 (Interpreter::run): Accept 0-sized allocations without asserting because
2643 WebKit does that sometimes.
2645 * MallocBench/MallocBench/flickr.ops:
2646 * MallocBench/MallocBench/flickr_memory_warning.ops:
2647 * MallocBench/MallocBench/reddit.ops:
2648 * MallocBench/MallocBench/reddit_memory_warning.ops:
2649 * MallocBench/MallocBench/theverge.ops:
2650 * MallocBench/MallocBench/theverge_memory_warning.ops: Updated these
2651 recordings because a bug in the recording mechanism caused one out of
2652 every few thousand slot values to be bogus.
2654 2014-04-13 Geoffrey Garen <ggaren@apple.com>
2656 Added some website recordings to MallocBench -- taken from Membuster
2657 https://bugs.webkit.org/show_bug.cgi?id=131601
2659 Reviewed by Ryosuke Niwa.
2661 Added flickr, reddit, and theverge -- each recorded from Membuster's
2662 cache, with and without sending Safari a low memory warning.
2664 * MallocBench/MallocBench.xcodeproj/project.pbxproj:
2665 * MallocBench/MallocBench/Benchmark.cpp:
2666 * MallocBench/MallocBench/flickr.cpp: Added.
2668 (benchmark_flickr_memory_warning):
2669 * MallocBench/MallocBench/flickr.h: Added.
2670 * MallocBench/MallocBench/flickr.ops: Added.
2671 * MallocBench/MallocBench/flickr_memory_warning.ops: Added.
2672 * MallocBench/MallocBench/reddit.cpp: Added.
2674 (benchmark_reddit_memory_warning):
2675 * MallocBench/MallocBench/reddit.h: Added.
2676 * MallocBench/MallocBench/reddit.ops: Added.
2677 * MallocBench/MallocBench/reddit_memory_warning.ops: Added.
2678 * MallocBench/MallocBench/theverge.cpp: Added.
2679 (benchmark_theverge):
2680 (benchmark_theverge_memory_warning):
2681 * MallocBench/MallocBench/theverge.h: Added.
2682 * MallocBench/MallocBench/theverge.ops: Added.
2683 * MallocBench/MallocBench/theverge_memory_warning.ops: Added.
2685 2014-04-13 Geoffrey Garen <ggaren@apple.com>
2687 MallocBench record/replay should support realloc
2688 https://bugs.webkit.org/show_bug.cgi?id=131598
2690 Reviewed by Ryosuke Niwa.
2692 * MallocBench/MallocBench.xcodeproj/project.pbxproj: Fixed some linkage
2693 issues that caused us not to fully link to system malloc in the default
2694 case. Also marked mbmalloc.dylib as required so the error message will
2695 be clearer if we mess up.
2697 * MallocBench/MallocBench/Interpreter.cpp:
2699 * MallocBench/MallocBench/Interpreter.h: Added the realloc case, and
2700 upgraded one-letter names to full words.
2702 2014-04-11 Dirk Schulze <krit@webkit.org>
2704 Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
2705 https://bugs.webkit.org/show_bug.cgi?id=79659
2707 Reviewed by Andreas Kling.
2709 Add performance tests for real this time.
2711 * Canvas/compositing-drawimage.html: Added.
2712 * Canvas/compositing-fillRect.html: Added.
2715 2014-04-11 Dirk Schulze <krit@webkit.org>
2717 Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
2718 https://bugs.webkit.org/show_bug.cgi?id=79659
2720 Reviewed by Andreas Kling.
2722 Add performance tests for fillRect() and drawImage() on composited contexts.
2724 * Canvas/compositing-drawimage.html: Added.
2725 * Canvas/compositing-fillRect.html: Added.
2727 2014-04-09 Zoltan Horvath <zoltan@webkit.org>
2729 [CSS Shapes] Add no shapes version of RegionsShapes performance test
2730 https://bugs.webkit.org/show_bug.cgi?id=131455
2732 Reviewed by Ryosuke Niwa.
2734 This is a no shapes version of the RegionsShapes performance test. All the content
2735 will wrap around the floating containers. This way we can compare the runtime/memory
2736 usage of the RegionsShapes test with/without shapes. The test is skipped by default.
2738 * Layout/Shapes/RegionsShapesNoShapes.html: Added.
2739 * Layout/Shapes/resources/RegionsShapesContentNoShapes.html: Added.
2741 2014-04-09 Zoltan Horvath <zoltan@webkit.org>
2743 [CSS Shapes] Add no regions version of RegionsShapes performance test
2744 https://bugs.webkit.org/show_bug.cgi?id=131442
2746 Reviewed by Ryosuke Niwa.
2748 We would like have a no regions version for RegionsShapes performance test. The new
2749 test produces similar layout to RegionsShapes.html without using regions. It is helpful
2750 for us to do further comparisons when necessary. This test is skipped by default.
2752 * Layout/Shapes/RegionsShapesNoRegions.html: Added.
2753 * Layout/Shapes/resources/RegionsShapes.css: Added.
2759 (#roundedInsetShape):
2762 (#selfIntersectingStar):
2766 * Layout/Shapes/resources/RegionsShapesContent.html:
2767 * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html: Added.
2768 * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html: Added.
2769 * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html: Added.
2771 2014-04-02 Geoffrey Garen <ggaren@apple.com>
2775 Try to ignore some Xcode shmutz in MallocBench.
2777 * MallocBench/MallocBench.xcodeproj: Added property svn:ignore.
2779 2014-04-02 Geoffrey Garen <ggaren@apple.com>
2781 Let's benchmark malloc
2782 https://bugs.webkit.org/show_bug.cgi?id=131118
2784 Reviewed by Mark Hahnenberg.
2786 I want to replace fastMalloc with something faster (fasterMalloc?).
2787 I wrote these benchmarks to test / drive development.
2789 * MallocBench: Added.
2790 * MallocBench/MallocBench: Added.
2791 * MallocBench/MallocBench.xcodeproj: Added.
2792 * MallocBench/MallocBench.xcodeproj/project.pbxproj: Added.
2793 * MallocBench/MallocBench/Benchmark.cpp: Added.
2796 (Benchmark::Benchmark):
2797 (Benchmark::printBenchmarks):
2798 (Benchmark::runOnce):
2800 (Benchmark::printReport):
2801 (Benchmark::currentTimeMS):
2802 (Benchmark::currentMemoryBytes):
2803 * MallocBench/MallocBench/Benchmark.h: Added.
2804 (Benchmark::Memory::Memory):
2805 (Benchmark::Memory::operator-):
2806 (Benchmark::isValid):
2807 * MallocBench/MallocBench/CPUCount.cpp: Added.
2809 * MallocBench/MallocBench/CPUCount.h: Added.
2810 * MallocBench/MallocBench/CommandLine.cpp: Added.
2811 (CommandLine::printUsage):
2812 * MallocBench/MallocBench/CommandLine.h: Added.
2813 (CommandLine::isValid):
2814 (CommandLine::benchmarkName):
2815 (CommandLine::isParallel):
2816 (CommandLine::heapSize):
2817 (CommandLine::measureHeap):
2818 * MallocBench/MallocBench/Interpreter.cpp: Added.
2819 (Interpreter::Interpreter):
2820 (Interpreter::~Interpreter):
2822 * MallocBench/MallocBench/Interpreter.h: Added.
2823 * MallocBench/MallocBench/balloon.cpp: Added.
2824 (benchmark_balloon):
2825 * MallocBench/MallocBench/balloon.h: Added.
2826 * MallocBench/MallocBench/big.cpp: Added.
2828 * MallocBench/MallocBench/big.h: Added.
2829 * MallocBench/MallocBench/churn.cpp: Added.
2830 (HeapDouble::operator new):
2831 (HeapDouble::operator delete):
2832 (HeapDouble::HeapDouble):
2833 (HeapDouble::operator+=):
2835 * MallocBench/MallocBench/churn.h: Added.
2836 * MallocBench/MallocBench/crash.ops: Added.
2837 * MallocBench/MallocBench/facebook.cpp: Added.
2838 (benchmark_facebook):
2839 * MallocBench/MallocBench/facebook.h: Added.
2840 * MallocBench/MallocBench/facebook.ops: Added.
2841 * MallocBench/MallocBench/fragment.cpp: Added.
2843 (benchmark_fragment):
2844 (benchmark_fragment_iterate):
2845 * MallocBench/MallocBench/fragment.h: Added.
2846 * MallocBench/MallocBench/list.cpp: Added.
2847 (benchmark_list_allocate):
2848 (benchmark_list_traverse):
2849 * MallocBench/MallocBench/list.h: Added.
2850 * MallocBench/MallocBench/main.cpp: Added.
2852 * MallocBench/MallocBench/mbmalloc.cpp: Added.
2853 * MallocBench/MallocBench/mbmalloc.h: Added.
2854 * MallocBench/MallocBench/medium.cpp: Added.
2856 * MallocBench/MallocBench/medium.h: Added.
2857 * MallocBench/MallocBench/message.cpp: Added.
2858 (benchmark_message_one):
2859 (benchmark_message_many):
2860 * MallocBench/MallocBench/message.h: Added.
2861 * MallocBench/MallocBench/realloc.cpp: Added.
2862 (benchmark_realloc):
2863 * MallocBench/MallocBench/realloc.h: Added.
2864 * MallocBench/MallocBench/tree.cpp: Added.
2865 (benchmark_tree_allocate):
2866 (benchmark_tree_traverse):
2867 (benchmark_tree_churn):
2868 * MallocBench/MallocBench/tree.h: Added.
2869 * MallocBench/run-malloc-benchmarks: Added.
2871 2014-03-29 Mark Lam <mark.lam@apple.com>
2873 LongSpider 3d-morph result check is inappropriate.
2874 <https://webkit.org/b/130928>
2876 Reviewed by Filip Pizlo.
2878 The LongSpider 3d-morph component expected result check is incorrect.
2879 The existing test checks if the leading digit of a sum starts with "-1".
2880 However, it turned out that the expected sum is in the order of
2881 -1.8735013540549517e-16 (i.e. very close to 0). With small errors in
2882 the terms of the sum adding up, it is very easy for the resultant sum
2883 to fluctuate. There is no guarantee that the resultant sum's most
2884 significant digit will start with -1 either.
2886 The fix is to do a tolerance check on all the terms of the sum as well
2887 as the total sum value instead. The tolerance should be more lenient
2888 for the sum which accumulates error from the individual terms, then for
2891 * LongSpider/3d-morph.js:
2894 2014-03-28 Zoltan Horvath <zoltan@webkit.org>
2896 [CSS Shapes] Add performance tests for Shapes with Regions
2897 https://bugs.webkit.org/show_bug.cgi?id=129624
2899 Reviewed by Ryosuke Niwa.
2901 This tests introduces a real-life like page, which contains different types of shapes within
2902 shape-outsides. The content flows through regions, which use media queries. The performance test
2903 loads the actual Shapes-Regions test case into iframes with different page sizes (thus the layout
2904 triggers the media queries as well), and measures its load time.
2906 * Layout/RegionsShapes.html: Added.
2907 * Layout/Shapes/resources/RegionsShapesContent.html: Added.
2909 2014-03-20 Zoltan Horvath <zoltan@webkit.org>
2911 Add option for hiding Confidence Interval Delta on the performance tests results page
2912 https://bugs.webkit.org/show_bug.cgi?id=130483
2914 Reviewed by Ryosuke Niwa.
2916 I've found it useful to hide the confidence interval delta from the results table
2917 sometimes, for example on copying data, or for a clearer look. This patch introduces
2918 a new button for it on the local results page.
2920 * resources/results-template.html:
2922 2014-03-20 Laszlo Vidacs <lvidacs.u-szeged@partner.samsung.com>
2924 Optimize RenderTable::colToEffCol() for tables without colspans
2925 https://bugs.webkit.org/show_bug.cgi?id=129298
2927 Reviewed by Simon Fraser.
2929 Create an alternative fast path to RenderTable colToEffCol() and effColToCol()
2930 when there is no colspan or colspan does not exceed the width of table.
2931 Blink merge https://codereview.chromium.org/154243002 by rhogan
2933 * Layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html: Added.
2934 * Layout/large-table-with-collapsed-borders-and-colspans.html: Added.
2935 * Layout/large-table-with-collapsed-borders-and-no-colspans.html: Added.
2936 * Layout/resources/large-table-with-collapsed-borders.css: Added.
2937 * Layout/resources/large-table-with-collapsed-borders.js: Added.
2939 2014-03-14 Maciej Stachowiak <mjs@apple.com>
2941 Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
2942 https://bugs.webkit.org/show_bug.cgi?id=130276
2943 <rdar://problem/16266927>
2945 Reviewed by Simon Fraser.
2947 * Dromaeo/resources/dromaeo/web/tests/sunspider-3d-raytrace.html:
2948 * Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bitwise-and.html:
2949 * Dromaeo/resources/dromaeo/web/tests/sunspider-math-cordic.html:
2950 * Dromaeo/resources/dromaeo/web/tests/sunspider-string-tagcloud.html:
2951 * LongSpider/3d-morph.js:
2952 * LongSpider/3d-raytrace.js:
2953 * LongSpider/math-cordic.js:
2954 * LongSpider/string-tagcloud.js:
2955 * Parser/resources/html5-8266.html:
2956 * Parser/resources/html5.html:
2958 2014-03-10 Zoltan Horvath <zoltan@webkit.org>
2960 [CSS Shapes] Add performance tests for SVG shape with shape-margin
2961 https://bugs.webkit.org/show_bug.cgi?id=129930
2963 Reviewed by Ryosuke Niwa.
2965 The test is skipped by default.
2967 * Layout/Shapes/ShapeOutsideSVGWithMargin.html: Added.
2968 * Layout/Shapes/resources/shape.svg: Added.
2970 2014-02-19 Zoltan Horvath <zoltan@webkit.org>
2972 [CSS Shapes] Add performance test for stacked floats with shape-outsides
2973 https://bugs.webkit.org/show_bug.cgi?id=128821
2975 Reviewed by Brent Fulgham.
2977 This tests generate stacked floats content with shape-outsides.
2978 The test is skipped by default.
2980 * Layout/Shapes/ShapeOutsideStackedPolygons.html: Added.
2982 2014-02-15 Zoltan Horvath <zoltan@webkit.org>
2984 [CSS Shapes] Add performance test for raster shape with shape-margin
2985 https://bugs.webkit.org/show_bug.cgi?id=128770
2987 Reviewed by Ryosuke Niwa.
2989 This patch introduces a new performance test for image valued shapes,
2990 where shape-margin is applied on the shape.
2991 The test is skipped by default.
2993 * Layout/Shapes/ShapeOutsideRasterWithMargin.html: Added.
2995 2014-02-14 Ryosuke Niwa <rniwa@webkit.org>
2997 Improve the appearance of DYEBench
2998 https://bugs.webkit.org/show_bug.cgi?id=128866
3000 Reviewed by Antti Koivisto.
3002 Add a div that shows progress during the test. Also show 95th percentile,
3003 and use a table instead of pre to show results.
3005 * DoYouEvenBench/Full.html:
3006 (.addResult): Added. Shows results in a table.
3007 (benchmarkClient.willRunTest): Added to show the progress bar.
3008 (benchmarkClient.didRunTest):
3009 (benchmarkClient.didRunSuites):
3010 (benchmarkClient.didFinishLastIteration): Compute 95th percentile using Statistics.js
3012 * DoYouEvenBench/resources/benchmark-runner.js:
3013 (BenchmarkRunner.prototype._appendFrame): Fix the bug where marginLeft and marginTop
3014 weren't correctly parsed. We were treating top as left and bottom as top somehow.
3015 (BenchmarkRunner.prototype._runTestAndRecordResults): Fixed a typo.
3017 2014-02-13 Zoltan Horvath <zoltan@webkit.org>
3019 [CSS Shapes] Add performance test for complex polygon with shape-margin
3020 https://bugs.webkit.org/show_bug.cgi?id=128769
3022 Reviewed by Ryosuke Niwa.
3024 This patch modifies the logic of createShapeOutsideTest to accept multiple
3025 CSS properties from the test. The patch adds performance test for complex
3026 polygon shape (self intersecting at multiple places) case, moreover we
3027 apply shape-margin on the polygon also.
3029 * Layout/Shapes/ShapeOutsideContentBox.html:
3030 * Layout/Shapes/ShapeOutsideInset.html:
3031 * Layout/Shapes/ShapeOutsidePolygonWithMargin.html: Added.
3032 * Layout/Shapes/ShapeOutsideRaster.html:
3033 * Layout/Shapes/ShapeOutsideSimplePolygon.html:
3034 * Layout/Shapes/resources/shapes.js:
3036 2014-02-13 Zoltan Horvath <zoltan@webkit.org>
3038 [CSS Shapes] Add performance test for raster shape
3039 https://bugs.webkit.org/show_bug.cgi?id=128746
3041 Reviewed by Ryosuke Niwa.
3043 This patch adds performance testing for image valued shape-outside.
3044 The test is skipped by default for now.
3046 * Layout/Shapes/ShapeOutsideRaster.html: Added.
3047 * Layout/Shapes/resources/shape.gif: Added.
3049 2014-02-10 Zoltan Horvath <zoltan@webkit.org>
3051 [CSS Shapes] Add initial performance tests for polygon shape
3052 https://bugs.webkit.org/show_bug.cgi?id=128554
3054 Reviewed by Ryosuke Niwa.
3056 This patch adds performance testing for simple polygon shape-outside.
3057 The Shapes performance tests directory is skipped by default.
3059 * Layout/Shapes/ShapeOutsideSimplePolygon.html: Added.
3061 2014-02-07 Zoltan Horvath <zoltan@webkit.org>
3063 [CSS Shapes] Add initial performance tests for inset shape
3064 https://bugs.webkit.org/show_bug.cgi?id=128378
3066 Reviewed by Ryosuke Niwa.
3068 * Layout/Shapes/ShapeOutsideContentBox.html: Move js to shapes.js.
3069 * Layout/Shapes/ShapeOutsideInset.html: Added.
3070 * Layout/Shapes/resources/shapes.js: Added.
3073 2014-02-04 Ryosuke Niwa <rniwa@webkit.org>
3075 Undelete the "build" directory erroneously removed in r163427.
3077 * DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/director/build:
3079 2014-02-04 Ryosuke Niwa <rniwa@webkit.org>
3081 Revert the change made in r162216 as it broke the benchmark on shipping Safari.
3083 * DoYouEvenBench/resources/benchmark-runner.js:
3085 2014-02-04 Ryosuke Niwa <rniwa@webkit.org>
3087 DoYouEvenBench: Update Ember.js test case
3088 https://bugs.webkit.org/show_bug.cgi?id=128227
3090 Reviewed by Benjamin Poulain.
3092 Updated the Ember.js TodoMVC implementation.
3094 * DoYouEvenBench/resources/tests.js:
3095 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower.json:
3096 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-data/ember-data.js: Added.
3097 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js:
3098 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:
3099 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:
3100 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js:
3101 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
3102 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js:
3103 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/index.html:
3104 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/app.js:
3105 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js:
3106 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js:
3107 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/helpers/pluralize.js: Added.
3108 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Removed.
3109 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/store.js: Removed.
3110 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/todo.js:
3111 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/router.js:
3112 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js:
3113 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/todos_view.js: Added.
3114 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/readme.md:
3115 * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/test.html:
3117 2014-02-04 Zoltan Horvath <zoltan@webkit.org>
3119 [CSS Shapes] Add initial performance test for shape-outside: content-box
3120 https://bugs.webkit.org/show_bug.cgi?id=128190
3122 Reviewed by Ryosuke Niwa.
3124 I've introduced Shapes subdirectory in Layout, every CSS Shapes related performance tests should
3125 go there in the future. The initial performance tests uses 'shape-outside: content-box' in order
3126 to tests the code paths of the Shapes implementation. I also introduced shapes.js, which allows us
3127 to easily add new, simple performance tests for shape-outside.
3129 The entire progress is tracked under #128188 meta bug.
3131 * Layout/Shapes/ShapeOutsideContentBox.html: Added.
3132 * Layout/Shapes/resources/shapes.css: Added.
3133 * Layout/Shapes/resources/shapes.js: Added.
3134 * Skipped: We skip running the tests by default for now.
3136 2014-01-17 Manuel Rego Casasnovas <rego@igalia.com>
3138 [CSS Regions] Minor fixes in regions performance tests
3139 https://bugs.webkit.org/show_bug.cgi?id=127041
3141 Reviewed by Ryosuke Niwa.
3143 Fix minor issues in CSS Regions performance tests.
3145 * Layout/RegionsAuto.html: Change type to lower case.
3146 * Layout/RegionsAutoMaxHeight.html: Ditto.
3147 * Layout/RegionsFixed.html: Ditto.
3148 * Layout/RegionsFixedShort.html: Ditto.
3149 * Layout/RegionsSelection.html: Ditto. Move test methods from regions.js.
3150 * Layout/resources/regions.js: Remove moved methods.
3152 2014-01-17 Ryosuke Niwa <rniwa@webkit.org>
3154 Host DoYouEvenBench on webkit.org
3155 https://bugs.webkit.org/show_bug.cgi?id=127185
3157 Reviewed by Benjamin Poulain.
3159 Compute the resources directory relative to the benchmark-runner's location
3160 so that we can load tests even if the runner HTML was located elsewhere.
3162 * DoYouEvenBench/Full.html:
3163 * DoYouEvenBench/resources/benchmark-runner.js:
3164 (BenchmarkState._containingDirectory):
3166 2014-01-17 Ryosuke Niwa <rniwa@webkit.org>
3168 DoYouEvenBench: Move flightjs-example-app and todomvc into resources
3169 https://bugs.webkit.org/show_bug.cgi?id=127183
3171 Rubber-stamped by Anders Carlsson.
3173 * DoYouEvenBench/InteractiveRunner.html: Copied from PerformanceTests/DoYouEvenBench/benchmark.html.
3174 * DoYouEvenBench/benchmark.html: Removed.
3175 * DoYouEvenBench/flightjs-example-app: Removed.
3176 * DoYouEvenBench/flightjs-example-app/LICENSE.md: Removed.
3177 * DoYouEvenBench/flightjs-example-app/README.md: Removed.
3178 * DoYouEvenBench/flightjs-example-app/app: Removed.
3179 * DoYouEvenBench/flightjs-example-app/app/boot: Removed.
3180 * DoYouEvenBench/flightjs-example-app/app/boot/page.js: Removed.
3181 * DoYouEvenBench/flightjs-example-app/app/component_data: Removed.
3182 * DoYouEvenBench/flightjs-example-app/app/component_data/compose_box.js: Removed.
3183 * DoYouEvenBench/flightjs-example-app/app/component_data/mail_items.js: Removed.
3184 * DoYouEvenBench/flightjs-example-app/app/component_data/move_to.js: Removed.
3185 * DoYouEvenBench/flightjs-example-app/app/component_ui: Removed.
3186 * DoYouEvenBench/flightjs-example-app/app/component_ui/compose_box.js: Removed.
3187 * DoYouEvenBench/flightjs-example-app/app/component_ui/folders.js: Removed.
3188 * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_controls.js: Removed.
3189 * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_items.js: Removed.
3190 * DoYouEvenBench/flightjs-example-app/app/component_ui/move_to_selector.js: Removed.
3191 * DoYouEvenBench/flightjs-example-app/app/component_ui/with_select.js: Removed.
3192 * DoYouEvenBench/flightjs-example-app/app/css: Removed.
3193 * DoYouEvenBench/flightjs-example-app/app/css/custom.css: Removed.
3194 * DoYouEvenBench/flightjs-example-app/app/data.js: Removed.
3195 * DoYouEvenBench/flightjs-example-app/app/templates.js: Removed.
3196 * DoYouEvenBench/flightjs-example-app/components: Removed.
3197 * DoYouEvenBench/flightjs-example-app/components/bootstrap: Removed.
3198 * DoYouEvenBench/flightjs-example-app/components/bootstrap/css: Removed.
3199 * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css: Removed.
3200 * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css: Removed.
3201 * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.css: Removed.
3202 * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.min.css: Removed.
3203 * DoYouEvenBench/flightjs-example-app/components/bootstrap/img: Removed.
3204 * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png: Removed.
3205 * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png: Removed.
3206 * DoYouEvenBench/flightjs-example-app/components/bootstrap/js: Removed.
3207 * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.js: Removed.
3208 * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.min.js: Removed.
3209 * DoYouEvenBench/flightjs-example-app/components/es5-shim: Removed.
3210 * DoYouEvenBench/flightjs-example-app/components/es5-shim/.gitignore: Removed.
3211 * DoYouEvenBench/flightjs-example-app/components/es5-shim/CHANGES: Removed.
3212 * DoYouEvenBench/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md: Removed.
3213 * DoYouEvenBench/flightjs-example-app/components/es5-shim/LICENSE: Removed.
3214 * DoYouEvenBench/flightjs-example-app/components/es5-shim/README.md: Removed.
3215 * DoYouEvenBench/flightjs-example-app/components/es5-shim/component.json: Removed.
3216 * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.js: Removed.
3217 * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.min.js: Removed.
3218 * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.js: Removed.
3219 * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.min.js: Removed.
3220 * DoYouEvenBench/flightjs-example-app/components/es5-shim/package.json: Removed.
3221 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests: Removed.
3222 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers: Removed.
3223 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js: Removed.
3224 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js: Removed.
3225 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h.js: Removed.
3226 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/index.html: Removed.
3227 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib: Removed.
3228 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js: Removed.
3229 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css: Removed.
3230 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js: Removed.
3231 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png: Removed.
3232 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/json2.js: Removed.
3233 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec: Removed.
3234 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-array.js: Removed.
3235 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-date.js: Removed.
3236 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-function.js: Removed.
3237 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-object.js: Removed.
3238 * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-string.js: Removed.
3239 * DoYouEvenBench/flightjs-example-app/components/flight: Removed.
3240 * DoYouEvenBench/flightjs-example-app/components/flight/.travis.yml: Removed.
3241 * DoYouEvenBench/flightjs-example-app/components/flight/lib: Removed.
3242 * DoYouEvenBench/flightjs-example-app/components/flight/lib/advice.js: Removed.
3243 * DoYouEvenBench/flightjs-example-app/components/flight/lib/component.js: Removed.
3244 * DoYouEvenBench/flightjs-example-app/components/flight/lib/compose.js: Removed.
3245 * DoYouEvenBench/flightjs-example-app/components/flight/lib/index.js: Removed.
3246 * DoYouEvenBench/flightjs-example-app/components/flight/lib/logger.js: Removed.
3247 * DoYouEvenBench/flightjs-example-app/components/flight/lib/registry.js: Removed.
3248 * DoYouEvenBench/flightjs-example-app/components/flight/lib/utils.js: Removed.
3249 * DoYouEvenBench/flightjs-example-app/components/flight/tools: Removed.
3250 * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug: Removed.
3251 * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug/debug.js: Removed.
3252 * DoYouEvenBench/flightjs-example-app/components/jasmine-flight: Removed.
3253 * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/LICENSE.md: Removed.
3254 * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/README.md: Removed.
3255 * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/bower.json: Removed.
3256 * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib: Removed.
3257 * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js: Removed.
3258 * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery: Removed.
3259 * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib: Removed.
3260 * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js: Removed.
3261 * DoYouEvenBench/flightjs-example-app/components/jquery: Removed.
3262 * DoYouEvenBench/flightjs-example-app/components/jquery/component.json: Removed.
3263 * DoYouEvenBench/flightjs-example-app/components/jquery/composer.json: Removed.
3264 * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.js: Removed.
3265 * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.min.js: Removed.
3266 * DoYouEvenBench/flightjs-example-app/components/mustache: Removed.
3267 * DoYouEvenBench/flightjs-example-app/components/mustache/mustache.js: Removed.
3268 * DoYouEvenBench/flightjs-example-app/components/requirejs: Removed.