[MotionMark] Add support for version numbers
[WebKit-https.git] / PerformanceTests / ChangeLog
1 2018-06-25  Jon Lee  <jonlee@apple.com>
2
3         [MotionMark] Add support for version numbers
4         https://bugs.webkit.org/show_bug.cgi?id=186479
5
6         Reviewed by Said Abou-Hallawa.
7
8         Add support for displaying the version number as well as including it in the JSON results.
9
10         When loading the front page, script replaces any element with classname version with the
11         version number of the benchmark, which is stored in Strings.version.
12
13         The JSON structure for the results includes a new version property:
14             {
15               "version": "1.0",
16               "options": { ... },
17               "data": [ ... ]
18             }
19
20         When dragging a results file, the version listed will come from the JSON file. Older
21         results will not have had the version property, in which case it will default to "1.0".
22
23         * MotionMark/index.html: Update title to some other default. Script will update it.
24         Include the version number in the logo title.
25         * MotionMark/developer.html: Ditto.
26         * MotionMark/about.html: Ditto.
27
28         * MotionMark/resources/runner/motionmark.js:
29         (ResultsDashboard): Update constructor to include version. This is used when serializing
30         results out to JSON, and displaying the results panel in developer mode.
31         (ResultsDashboard._processData): When running the benchmark, include benchmark version string
32         in the results object.
33         (ResultsDashboard.version):
34         (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the
35         benchmark version string to the dashboard, which holds the results.
36         (window.sectionsManager.setSectionVersion): Helper function to update the element in the
37         section with the class name version.
38         (window.benchmarkController.initialize): Populate all DOM elements with class name "version"
39         with the version string. Update the page title.
40         (window.benchmarkController.showResults): When showing results, update the version string
41         based on what is included in the JSON results, which would be the same as the benchmark version.
42         * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo
43         in a div and include the version string.
44         * MotionMark/resources/strings.js: Add strings for the page title template, and the version.
45
46         * MotionMark/resources/debug-runner/motionmark.css:
47         * MotionMark/resources/debug-runner/motionmark.js:
48         (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the
49         benchmark version string to the dashboard, which holds the results.
50         (window.benchmarkController.initialize): Populate all DOM elements with class name "version"
51         with the version string. Update the page title. When dragging in JSON results, look for
52         version to pass to the dashboard. If it doesn't exist, default to "1.0".
53         (window.benchmarkController.showResults): When showing results, update the version string
54         based on what is included in the JSON results, instead of the current benchmark version.
55         * MotionMark/resources/debug-runner/tests.js: Update page title template.
56
57 2018-06-08  Jon Lee  <jonlee@apple.com>
58
59         [MotionMark] Rename Suits test files
60         https://bugs.webkit.org/show_bug.cgi?id=186447
61
62         Reviewed by Said Abou-Hallawa.
63
64         * MotionMark/resources/runner/tests.js:
65         * MotionMark/tests/master/resources/suits.js: Renamed from PerformanceTests/MotionMark/tests/master/resources/svg-particles.js.
66         * MotionMark/tests/master/suits.html: Renamed from PerformanceTests/MotionMark/tests/master/svg-particles.html.
67         * MotionMark/tests/svg/suits.html:
68
69 2018-06-08  Jon Lee  <jonlee@apple.com>
70
71         Add sub-tests based on Suits
72         https://bugs.webkit.org/show_bug.cgi?id=186260
73
74         Reviewed by Said Abou-Hallawa.
75
76         Add a new developer Suits suite with sub-tests that isolate parts of each particle.
77         The sub-tests are:
78             - Particles using only clip paths
79             - Particles using only shapes
80             - Particles that have no gradients
81             - Particles that have no rotation
82             - Particles that do not move around at all (but all of the physics calculations are
83             still performed)
84
85         * MotionMark/resources/debug-runner/tests.js:
86         * MotionMark/tests/master/resources/svg-particles.js: Rename the stage, particle, and
87         benchmark to "Suits" from "SVG". Change SuitsParticle so that we guarantee 50% clip and
88         shape paths rather than relying on random chance. Wrap a check around creation of the
89         gradient element, and use a simple fill color when we aren't using a gradient.
90         * MotionMark/tests/svg/suits.html: Added.
91         * MotionMark/tests/svg/suits.js: Added.
92         Look for the query string and set the particle based on what is selected.
93
94 2018-06-06  Jon Lee  <jonlee@apple.com>
95
96         Allow the ramp controller to run tests that take less time than the initial ramp-up phase
97         https://bugs.webkit.org/show_bug.cgi?id=186257
98
99         Reviewed by Said Abou-Hallawa.
100
101         * MotionMark/tests/resources/main.js: Extend the desired end timestamp when ramp-up occurs.
102         Previously the controller assumed that the duration of the test was always longer than the
103         time it took to figure out the order of magnitude of particles to render. When that range
104         is determined, the end timestamp is then extended. If the duration is too short, the controller
105         would throw an exception. The fix is to continue extending the timestamp every time the order of
106         magnitude tiers up.
107
108         In general testing with really short durations isn't practical, but sometimes it is
109         desired for debugging.
110
111         To avoid confusion of the private variables, I renamed Benchmark._startTimestamp to
112         Benchmark._benchmarkStartTimestamp, to disambiguate from Controller._startTimestamp.
113         Benchmark._startTimestamp is set once and never changed, after the initial 100ms warm-up.
114         Controller._startTimestamp is initialized to 0 (which means "not initialized"), and then after
115         the warm up is complete, set in Controller.start() to the same wall clock timestamp, and never
116         changed afterwards.
117
118 2018-06-06  Jon Lee  <jonlee@apple.com>
119
120         Remove unneeded data processing in MotionMark
121         https://bugs.webkit.org/show_bug.cgi?id=186256
122
123         Reviewed by Said Abou-Hallawa.
124
125         Remove calculation of average frame rate based on multiple samples at a given complexity.
126         It is not used in the calculation of the score, and is just extra work to do at the end
127         of a test.
128
129         * MotionMark/developer.html: Remove options to show average data and regression based on
130         that data.
131         * MotionMark/resources/debug-runner/graph.js: Remove data. Update the time graph that
132         shows the relationship between the break point in the regression against the complexity
133         graph.
134         * MotionMark/resources/debug-runner/motionmark.css: Make the confidence intervals easier
135         to see.
136         * MotionMark/resources/runner/motionmark.js: Simplify score calculation now that we are
137         only calculating regressions on the raw data. We were calculating it based on the averages,
138         but that was just for analysis, and not used in the actual score. Get rid of the
139         |complexitySamples| local variable.
140         * MotionMark/resources/strings.js: Remove unneeded string constant.
141         * MotionMark/tests/resources/main.js:
142         (processSamples): Refactor so that more of it can be shared between Controller and
143         RampController. It also avoids processing the raw samples (controllerSamples) twice for
144         the ramp controller.
145         (_processComplexitySamples): Remove logic to calculate averages based on complexity.
146         (_processMarks): Split this out from the old processSamples.
147         (_processControllerSamples): Split this out from the old processSamples.
148
149 2018-06-06  Jon Lee  <jonlee@apple.com>
150
151         Strip out more characters when creating permalinks
152         https://bugs.webkit.org/show_bug.cgi?id=186259
153
154         Reviewed by Said Abou-Hallawa.
155
156         Tests and suites may have names that make permalinks to the tests less readable when
157         shared. Expand the set of characters that are stripped out of the names.
158
159         * MotionMark/resources/debug-runner/motionmark.js: Refactor to call
160         stripUnwantedCharactersForURL. For existing links, decode the suite and test names.
161         * MotionMark/resources/extensions.js:
162         (Utilities.stripUnwantedCharactersForURL): Rename from stripNonASCIICharacters.
163         Remove any non-alphanumeric character.
164
165 2018-06-04  Jon Lee  <jonlee@apple.com>
166
167         Remove unnecessary MotionMark controllers
168         https://bugs.webkit.org/show_bug.cgi?id=186255
169
170         Reviewed by Said Abou-Hallawa.
171
172         Get rid of the ramp30 and the fixed-with-a-step controllers, which aren't used for testing
173         or debugging.
174
175         * MotionMark/developer.html: Move the "ramp" option as first, since that is the default
176         controller for the benchmark.
177         * MotionMark/resources/debug-runner/motionmark.js:
178         * MotionMark/resources/runner/motionmark.js: Added missing copyright notice.
179         * MotionMark/tests/resources/main.js:
180
181 2018-05-25  Myles C. Maxfield  <mmaxfield@apple.com>
182
183         Improve the performance of Font::canRenderCombiningCharacterSequence()
184         https://bugs.webkit.org/show_bug.cgi?id=185933
185
186         Reviewed by Ryosuke Niwa.
187
188         * Layout/ComplexLongUnique.html: Added.
189
190 2018-05-25  Saam Barati  <sbarati@apple.com>
191
192         Have a memory test where we can validate JSCs mini memory mode
193         https://bugs.webkit.org/show_bug.cgi?id=185932
194
195         Reviewed by Mark Lam.
196
197         We add a directory here with the contents of the testmem benchmark.
198         To run it, use `Tools/Scripts/run-testmem`. To add new tests in the future,
199         you just need to add JS files to this directory.
200
201         * testmem: Added.
202         * testmem/air.js: Added.
203         * testmem/base64.js: Added.
204         * testmem/basic.js: Added.
205         * testmem/box2d.js: Added.
206         * testmem/crypto-md5.js: Added.
207         * testmem/date-format-tofte.js: Added.
208         * testmem/earley-boyer.js: Added.
209         * testmem/hash-map.js: Added.
210         * testmem/regex-dna.js: Added.
211         * testmem/splay.js: Added.
212         * testmem/tagcloud.js: Added.
213
214 2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>
215
216         Unreviewed, rolling out r232052.
217
218         Breaks internal builds.
219
220         Reverted changeset:
221
222         "Use more C++17"
223         https://bugs.webkit.org/show_bug.cgi?id=185176
224         https://trac.webkit.org/changeset/232052
225
226 2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>
227
228         Use more C++17
229         https://bugs.webkit.org/show_bug.cgi?id=185176
230
231         Reviewed by JF Bastien.
232
233         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
234         * MediaTime/Configurations/Base.xcconfig:
235         * MediaTime/MediaTime.xcodeproj/project.pbxproj:
236
237 2018-04-30  Myles C. Maxfield  <mmaxfield@apple.com>
238
239         Improve the performance of FontCascadeDescription's effectiveFamilies
240         https://bugs.webkit.org/show_bug.cgi?id=184720
241
242         Reviewed by Simon Fraser.
243
244         This performance test calls SystemFontDatabase::systemFontCascadeList() around 2,000,000 times (before
245         this patch is applied), which is roughly equivalent to the page we found the performance problem on.
246         The calling pattern is roughly equivalent in this test.
247
248         * Layout/system-ui.html: Added.
249
250 2018-03-08  Antti Koivisto  <antti@apple.com>
251
252         Update StyleBench version number in page title to 0.3
253
254         * StyleBench/index.html:
255
256         There has been a bunch of changes, most notably the addition of attribute selector test step.
257
258 2018-02-16  Dean Jackson  <dino@apple.com>
259
260         Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
261         https://bugs.webkit.org/show_bug.cgi?id=182894
262
263         Reviewed by Tim Horton.
264
265         Rename OPENGL_ES_2 to OPENGL_ES.
266
267         * StitchMarker/wtf/Platform.h:
268
269 2018-02-09  Ryosuke Niwa  <rniwa@webkit.org>
270
271         Make run-perf-tests work with Speedometer 2.0 and re-enable the test
272         https://bugs.webkit.org/show_bug.cgi?id=182088
273
274         Reviewed by Antti Koivisto.
275
276         This patch updates the test harness to report new metrics of Speedometer 2.0.
277
278         Replaced the total time by the geometric mean of the time spent in each suite, and added scores
279         as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template
280         to support "Score" metric with "pt" as its unit.
281
282         * Skipped: Unskipped the test.
283         * Speedometer/resources/benchmark-report.js:
284         (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument
285         to report the score in addition to time. Also report the geomean of time instead of the total time.
286         (window.benchmarkClient.willStartFirstIteration): Report the geomean of time.
287         (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests.
288         (window.benchmarkClient.didFinishLastIteration): Report the scores.
289
290 2018-02-09  Ross Kirsling  <ross.kirsling@sony.com>
291
292         Use REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port.
293         https://bugs.webkit.org/show_bug.cgi?id=182623
294
295         Reviewed by Alex Christensen.
296
297         * StitchMarker/wtf/Platform.h:
298         Simplify #if.
299
300 2018-02-01  Antti Koivisto  <antti@apple.com>
301
302         StyleBench: Attribute selectors and other improvements
303         https://bugs.webkit.org/show_bug.cgi?id=182387
304
305         Reviewed by Joseph Pecoraro.
306
307         - Add some attributes to elements in all tests
308         - Add some attribute selectors to stylesheets in all tests
309         - Also add some * selectors to all stylesheets.
310         - Add attribute mutation step to all suites
311         - Make test steps do more mutations (25->100) and reduce the number of steps to keep testing time in check.
312           Too fast steps were running into timer resolution limits.
313
314         * StyleBench/resources/style-bench.js:
315         (defaultConfiguration):
316         (prototype.randomAttributeName):
317         (prototype.randomAttributeValue):
318         (prototype.randomAttributeSelector):
319         (prototype.makeCompoundSelector):
320         (prototype.makeElement):
321         (prototype.addClasses):
322         (prototype.removeClasses):
323         (prototype.mutateAttributes):
324         (prototype.async.runForever):
325         * StyleBench/resources/tests.js:
326         (makeSteps):
327         (makeSuite):
328
329 2018-02-01  Geoffrey Garen  <ggaren@apple.com>
330
331         Make MallocBench easier for non-WebKit engineers to run
332         https://bugs.webkit.org/show_bug.cgi?id=182415
333
334         Reviewed by Saam Barati.
335
336         * MallocBench/MallocBench.xcodeproj/project.pbxproj: Use c++14 so we
337         can make_unique.
338
339         Specify that we support all Darwin platforms so you can test them.
340
341         * MallocBench/run-malloc-benchmarks: Specify the path to MallocBench
342         and libmbmalloc explicitly, rather than computing them implicitly
343         using webkitdirs. Non-WebKit folks don't have the directory structure
344         required by webkitdirs.
345
346         Remove Linux-specific and cmake-specific behaviors because we only
347         needed them in the world of implicit path computation.
348
349 2018-01-31  Ryosuke Niwa  <rniwa@webkit.org>
350
351         Make run-perf-tests work with StyleBench and re-enable it
352         https://bugs.webkit.org/show_bug.cgi?id=182322
353
354         Reviewed by Antti Koivisto.
355
356         This patch updates the test harness to report new metrics of StyleBench.
357
358         Replaced the total time by the geometric mean of the time spent in each suite, and added scores
359         as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template
360         to support "Score" metric with "pt" as its unit.
361
362         * Skipped: Unskipped the test.
363         * StyleBench/resources/benchmark-report.js:
364         (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument
365         to report the score in addition to time. Also report the geomean of time instead of the total time.
366         (window.benchmarkClient.willStartFirstIteration): Report the geomean of time.
367         (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests.
368         (window.benchmarkClient.didFinishLastIteration): Report the scores.
369         * resources/results-template.html: Added "Score" as a metric and "pt" as its unit.
370         * resources/runner.js:
371         (PerfTestRunner..finish): Ditto.
372
373 2018-01-30  Ryosuke Niwa  <rniwa@webkit.org>
374
375         StyleBench: Generate more mutation steps
376         https://bugs.webkit.org/show_bug.cgi?id=182291
377
378         Rubber-stamped by Antti Koivisto
379
380         Use zero-based index instead of one-based index.
381
382         * StyleBench/resources/tests.js:
383         (makeSteps):
384
385 2018-01-30  Antti Koivisto  <antti@apple.com>
386
387         StyleBench: Generate more mutation steps
388         https://bugs.webkit.org/show_bug.cgi?id=182291
389
390         Reviewed by Ryosuke Niwa.
391
392         The test should be doing multiple rounds of mutations in a single document to test what is supposed to test (like it did before r227756).
393         This also makes test results more stable and less dependent on possible first-time costs.
394
395         * StyleBench/resources/benchmark-runner.js:
396
397         Adjust correctionFactor to match the new steps count. With 1.5 Firefox is ~72rpm.
398
399         * StyleBench/resources/tests.js:
400         (makeSteps):
401
402         Generate 10 rounds of class/element mutation steps.
403         Give each generated step unique name so reporting works.
404         Make individual steps do fewer mutations.
405
406 2018-01-29  Antti Koivisto  <antti@apple.com>
407
408         StyleBench: Remove : from a test name
409         https://bugs.webkit.org/show_bug.cgi?id=182258
410
411         Reviewed by Ryosuke Niwa.
412
413         It breaks reporting.
414
415         * StyleBench/resources/style-bench.js:
416         (nthPseudoClassConfiguration):
417
418 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
419
420         Temporarily skip StyleBench until webkit.org/b/182088 is fixed.
421
422         * Skipped:
423
424 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
425
426         Make StyleBench compatible with run-benchmark and run-perf-tests
427         https://bugs.webkit.org/show_bug.cgi?id=182262
428
429         Reviewed by Antti Koivisto.
430
431         Copied resource files referenced from Speedometer directory since run-benchmark needs to be able
432         to checkout each benchmark separately.
433
434         Removed the code to create tests of the same name five times in makeSteps since this
435         won't be compatible with either run-benchmark or run-perf-tests.
436
437         * StyleBench/index.html: Removed the code to show warnings for local files since run-benchmark
438         doesn't use HTTP server in WebDriver mode.
439         * StyleBench/resources/benchmark-report.js: Copied from resources/benchmark-report.js.
440         * StyleBench/resources/benchmark-runner.js: Copied from resources/benchmark-runner.js.
441         (BenchmarkRunner.prototype._finalize): Use the correction factor of 8 instead of 5 in StyleBench.
442         * StyleBench/resources/gauge.png: Copied from resources/gauge.png.
443         * StyleBench/resources/gauge@2x.png: Copied from resources/gauge@2x.png.
444         * StyleBench/resources/main.css: Copied from resources/main.css.
445         * StyleBench/resources/main.js: Copied from resources/main.js.
446         * StyleBench/resources/tests.js:
447         (makeSteps): Only make each test once.
448
449 2018-01-26  Chris Nardi  <cnardi@chromium.org>
450
451         Addressing post-review comments after r226614
452         https://bugs.webkit.org/show_bug.cgi?id=182151
453
454         Reviewed by Myles C. Maxfield.
455
456         * StitchMarker/wtf/text/StringImpl.h:
457         (WTF::isSpaceOrNewline):
458         * StitchMarker/wtf/text/TextBreakIterator.cpp:
459         (WTF::numCodeUnitsInGraphemeClusters):
460         * StitchMarker/wtf/text/TextBreakIterator.h:
461
462 2018-01-22  Antti Koivisto  <antti@apple.com>
463
464         StyleBench: Separate test for :nth pseudo classes
465         https://bugs.webkit.org/show_bug.cgi?id=181932
466
467         Reviewed by Sam Weinig.
468
469         Optimization strategies for nth are different from other structural pseudo classes (:first-child etc). Move them to a separate test.
470
471         * StyleBench/resources/style-bench.js:
472         (structuralPseudoClassConfiguration):
473         (nthPseudoClassConfiguration):
474
475             Add a new configuration.
476
477         (predefinedConfigurations):
478         (pseudoClassConfiguration): Deleted.
479
480 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
481
482         Temporarily skip Speedometer until we fix the metrics.
483
484         * Skipped:
485
486 2018-01-16  Alex Christensen  <achristensen@webkit.org>
487
488         Fix Mac CMake build after r222900
489
490         * MallocBench/MallocBench/CMakeLists.txt:
491         The mbmalloc target doesn't exist if we're not in developer mode, so only use it if we are.
492
493 2018-01-09  Ryosuke Niwa  <rniwa@webkit.org>
494
495         Speedometer 2.0: Update the About page.
496         https://bugs.webkit.org/show_bug.cgi?id=175918
497
498         Reviewed by Keith Miller.
499
500         Updated the about page for Speedometer 2.0.
501
502         * Speedometer/index.html:
503
504 == Rolled over to ChangeLog-2018-01-01 ==