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