Make JetStream 2
[WebKit-https.git] / PerformanceTests / ChangeLog
1 2018-10-18  Saam Barati  <sbarati@apple.com>
2
3         Make JetStream 2
4         https://bugs.webkit.org/show_bug.cgi?id=187829
5
6         Rubber-stamped by Mark Lam.
7
8         This patch checks in the new JetStream 2 benchmark. JetStream 2 is
9         a new JavaScript and Web Assembly benchmark. JetStream 2's goal
10         is to measure the startup, worst case, and peak throughput performance
11         of the JavaScript engine. JetStream 2 incorporates these previous
12         benchmarks:
13         - JetStream
14         - ARES-6
15         - Kraken
16         - Web Tooling Benchmark
17         - WasmBench
18         - RexBench
19         
20         JetStream 2 also adds some new benchmarks:
21         - Two tests emphasizing web worker performance.
22         - One test emphasizing Promise, async iteration, and DataView performance.
23         - Two new code load tests.
24         - WSL: a test measuring all kinds of things, especially emphasizing exception performance.
25
26         * JetStream2: Added.
27
28 2018-10-02  Chris Dumez  <cdumez@apple.com>
29
30         Regression(r236613): Parser/html-parser.html performance test is failing
31         https://bugs.webkit.org/show_bug.cgi?id=190201
32
33         Unreviewed, apply the same fix as in r236699 to make sure the iframe is treated as
34         same origin, so that calls to document.open() / document.write() succeed.
35
36         * Parser/html-parser.html:
37
38 2018-10-01  Chris Dumez  <cdumez@apple.com>
39
40         Regression(r236613): Parser/HTML5-8266-ParseOnly.html performance tests no longer runs
41         https://bugs.webkit.org/show_bug.cgi?id=190174
42
43         Reviewed by Ryosuke Niwa.
44
45         Update iframe's sandbox to use 'allow-same-origin' so that the iframe is treated as same-origin and so that
46         the top frame can call document.open() / document.write() on the subframe. This test was also failing in
47         Firefox without this change.
48
49         * Parser/HTML5-8266-ParseOnly.html:
50
51 2018-08-27  Aditya Keerthi  <akeerthi@apple.com>
52
53         Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
54         https://bugs.webkit.org/show_bug.cgi?id=188931
55
56         Reviewed by Wenson Hsieh.
57
58         * StitchMarker/wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
59
60 2018-08-23  Don Olmstead  <don.olmstead@sony.com>
61
62         [CMake] Have checks are not getting set inside CMake properly
63         https://bugs.webkit.org/show_bug.cgi?id=188901
64
65         Reviewed by Michael Catanzaro.
66
67         Add notification that MallocBench is disabled.
68
69         * CMakeLists.txt:
70
71 2018-08-23  Don Olmstead  <don.olmstead@sony.com>
72
73         [CMake] Add HAVE_MALLOC_TRIM definition
74         https://bugs.webkit.org/show_bug.cgi?id=188897
75
76         Reviewed by Konstantin Tokarev.
77
78         MallocBench should only be built on Apple platforms and platforms that
79         have malloc_trim.
80
81         * CMakeLists.txt:
82
83 2018-08-13  Jon Lee  <jonlee@apple.com>
84
85         Update MotionMark version number
86         https://bugs.webkit.org/show_bug.cgi?id=188535
87         <rdar://problem/43254078>
88
89         Reviewed by Said Abou-Hallawa.
90
91         * MotionMark/resources/strings.js: To 1.1.
92
93 2018-08-13  Jon Lee  <jonlee@apple.com>
94
95         [MotionMark] Update Multiply test
96         https://bugs.webkit.org/show_bug.cgi?id=188532
97         <rdar://problem/43252151>
98
99         Reviewed by Said Abou-Hallawa.
100
101         Update Multiply test to have a larger upper limit of number of particles. Cycle through three
102         different ways of hiding an element. Add new Multiple suite that isolates those components for
103         debugging purposes.
104
105         * MotionMark/resources/debug-runner/tests.js:
106         * MotionMark/tests/dom/multiply.html: Added.
107         * MotionMark/tests/dom/resources/multiply.js: Added.
108         * MotionMark/tests/master/resources/multiply.js:
109
110 2018-08-13  Jon Lee  <jonlee@apple.com>
111
112         [MotionMark] Update Leaves test
113         https://bugs.webkit.org/show_bug.cgi?id=188530
114         <rdar://problem/43251862>
115
116         Reviewed by Said Abou-Hallawa.
117
118         Update Leaves test to include opacity and scale. Add new Leaves suite that isolate those components
119         for debugging purposes.
120
121         * MotionMark/resources/debug-runner/tests.js:
122         * MotionMark/tests/dom/leaves.html:
123         * MotionMark/tests/dom/resources/leaves.js:
124         * MotionMark/tests/master/resources/leaves.js:
125
126 2018-08-10  Ben Richards  <benton_richards@apple.com>
127
128         Add ability to ignore process prewarming for launch time benchmark
129         https://bugs.webkit.org/show_bug.cgi?id=188462
130
131         Reviewed by Ryosuke Niwa.
132
133         Added a flag to the new tab benchmark that will open a blank tab before the tab to be measured in order to ignore process prewarming.
134
135         * LaunchTime/launch_time.py:
136         (DefaultLaunchTimeHandler):
137         (DefaultLaunchTimeHandler.on_receive_stop_time): Deleted.
138         (DefaultLaunchTimeHandler.on_receive_stop_signal):
139         (DefaultLaunchTimeHandler.do_HEAD):
140         (DefaultLaunchTimeHandler.do_GET):
141         (DefaultLaunchTimeHandler.do_POST):
142         (LaunchTimeBenchmark):
143         (LaunchTimeBenchmark._standard_deviation): Fixed divide by zero bug when '-n' is set to 1
144         (LaunchTimeBenchmark.open_tab): Added option to open a blank tab
145         (LaunchTimeBenchmark.run):
146         * LaunchTime/new_tab.py:
147         (NewTabBenchmark.initialize):
148         (NewTabBenchmark.run_iteration):
149         (NewTabBenchmark.will_parse_arguments):
150         (NewTabBenchmark.did_parse_arguments):
151         (NewTabBenchmark.ResponseHandler.Handler.get_test_page):
152         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
153         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
154         (NewTabBenchmark):
155         * LaunchTime/startup.py:
156         (StartupBenchmark.ResponseHandler.Handler.get_test_page):
157         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
158         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
159         (StartupBenchmark):
160
161 2018-08-10  Truitt Savell  <tsavell@apple.com>
162
163         Unreviewed, rolling out r234750.
164
165         Caused 185 perf test failures.
166
167         Reverted changeset:
168
169         "Add ability to ignore process prewarming for launch time
170         benchmark"
171         https://bugs.webkit.org/show_bug.cgi?id=188462
172         https://trac.webkit.org/changeset/234750
173
174 2018-08-09  Ben Richards  <benton_richards@apple.com>
175
176         Add ability to ignore process prewarming for launch time benchmark
177         https://bugs.webkit.org/show_bug.cgi?id=188462
178
179         Reviewed by Ryosuke Niwa.
180
181         Added a flag to the new tab benchmark that will open a blank tab before the tab to be measured in order to ignore process prewarming.
182
183         * LaunchTime/launch_time.py:
184         (DefaultLaunchTimeHandler):
185         (DefaultLaunchTimeHandler.on_receive_stop_time): Deleted.
186         (DefaultLaunchTimeHandler.on_receive_stop_signal):
187         (DefaultLaunchTimeHandler.do_HEAD):
188         (DefaultLaunchTimeHandler.do_GET):
189         (DefaultLaunchTimeHandler.do_POST):
190         (LaunchTimeBenchmark):
191         (LaunchTimeBenchmark._standard_deviation): Fixed divide by zero bug when '-n' is set to 1
192         (LaunchTimeBenchmark.open_tab): Added option to open a blank tab
193         (LaunchTimeBenchmark.run):
194         * LaunchTime/new_tab.py:
195         (NewTabBenchmark.initialize):
196         (NewTabBenchmark.run_iteration):
197         (NewTabBenchmark.will_parse_arguments):
198         (NewTabBenchmark.did_parse_arguments):
199         (NewTabBenchmark.ResponseHandler.Handler.get_test_page):
200         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
201         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
202         (NewTabBenchmark):
203         * LaunchTime/startup.py:
204         (StartupBenchmark.ResponseHandler.Handler.get_test_page):
205         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
206         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
207         (StartupBenchmark):
208
209 2018-07-26  Andy VanWagoner  <andy@vanwagoner.family>
210
211         [INTL] Remove INTL sub-feature compile flags
212         https://bugs.webkit.org/show_bug.cgi?id=188081
213
214         Reviewed by Michael Catanzaro.
215
216         Removed old and unused i18n flag.
217
218         * StitchMarker/wtf/FeatureDefines.h:
219
220 2018-07-20  David Fenton  <david_fenton@apple.com>
221
222         REGRESSION (234006) ERROR: Blocked access to external URL http://code.jquery.com/jquery-1.9.1.min.js
223         https://bugs.webkit.org/show_bug.cgi?id=187858
224
225         Unreviewed test gardening, skipped test.
226
227         * Skipped: LaunchTime
228
229 2018-07-19  Ben Richards  <benton_richards@apple.com>
230
231         Add benchmark for WebKit process launch times
232         https://bugs.webkit.org/show_bug.cgi?id=186414
233
234         Reviewed by Ryosuke Niwa.
235
236         Added two benchmarks, one for measuring browser new tab launch time and one for browser startup time.
237
238         * LaunchTime/.gitignore: Added.
239         * LaunchTime/feedback_client.html: Added.
240         Displays benchmark progress in browser
241         * LaunchTime/feedback_server.py: Added.
242         (FeedbackServer): Sends data to feedback_client via websocket
243         (FeedbackServer.__init__):
244         (FeedbackServer._create_app):
245         (FeedbackServer._start_server):
246         (FeedbackServer._send_all_messages):
247         (FeedbackServer.start):
248         (FeedbackServer.stop):
249         (FeedbackServer.send_message): Send a message to the feedback_client
250         (FeedbackServer.wait_until_client_has_loaded): Wait until the feedback_client has opened a websocket connection to the feedback_server
251         (FeedbackServer.MainHandler): Handler factory to create handler that serves feedback_client.html
252         (FeedbackServer.MainHandler.Handler):
253         (FeedbackServer.MainHandler.Handler.get):
254         (FeedbackServer.WSHandler): Handler factory to create handler that sends data to feedback client
255         (FeedbackServer.WSHandler.Handler):
256         (FeedbackServer.WSHandler.Handler.open): On websocket connection opened
257         (FeedbackServer.WSHandler.Handler.on_close): On websocket connection closed
258         * LaunchTime/launch_time.py: Added.
259         (DefaultLaunchTimeHandler): Abstract HTTP request handler for launch time benchmarks
260         (DefaultLaunchTimeHandler.get_test_page): Default test page to be overridden by benchmarks
261         (DefaultLaunchTimeHandler.get_blank_page):
262         (DefaultLaunchTimeHandler.on_receive_stop_time):
263         (DefaultLaunchTimeHandler.do_HEAD):
264         (DefaultLaunchTimeHandler.do_GET):
265         (DefaultLaunchTimeHandler.do_POST):
266         (DefaultLaunchTimeHandler.log_message): Suppresses HTTP logs from SimpleHTTPRequestHandler
267         (LaunchTimeBenchmark): Abstract class which launch time benchmarks inherit from and override methods desired to customize
268         (LaunchTimeBenchmark.__init__):
269         (LaunchTimeBenchmark._parse_browser_bundle_path): Parser for bundle path option
270         (LaunchTimeBenchmark._parse_args):
271         (LaunchTimeBenchmark._run_server): Target function for main server thread
272         (LaunchTimeBenchmark._setup_servers):
273         (LaunchTimeBenchmark._clean_up):
274         (LaunchTimeBenchmark._exit_due_to_exception):
275         (LaunchTimeBenchmark._geometric_mean):
276         (LaunchTimeBenchmark._standard_deviation):
277         (LaunchTimeBenchmark._compute_results): Returns mean and std dev of list of results and pretty prints if should_print=True is specified
278         (LaunchTimeBenchmark._wait_times): Mimic numpy.linspace
279         (LaunchTimeBenchmark.open_tab): Open a browser tab with the html given by self.response_handler.get_test_page
280         (LaunchTimeBenchmark.launch_browser): Open a broser to either the feedback client (if option is set) or a blank page
281         (LaunchTimeBenchmark.quit_browser):
282         (LaunchTimeBenchmark.quit_browser.quit_app):
283         (LaunchTimeBenchmark.quit_browser.is_app_closed):
284         (LaunchTimeBenchmark.close_tab):
285         (LaunchTimeBenchmark.wait):
286         (LaunchTimeBenchmark.log): Print to console and send to feedback client if --feedback-in-browser flag is used
287         (LaunchTimeBenchmark.log_verbose): Only logs if --verbose flag is used
288         (LaunchTimeBenchmark.run):
289         (LaunchTimeBenchmark.group_init): Initialization done before each round of iterations
290         (LaunchTimeBenchmark.run_iteration):
291         (LaunchTimeBenchmark.initialize): Convenience method to be overriden by subclasses which is called at the end of __init__
292         (LaunchTimeBenchmark.will_parse_arguments): Called before argparse.parse_args to let subclasses add new command line arguments
293         (LaunchTimeBenchmark.did_parse_arguments): Called after argparse.parse_args to let subclass initialize based on command line arguments
294         * LaunchTime/new_tab.py: Added
295         (NewTabBenchmark):
296         (NewTabBenchmark._parse_wait_time): Parser for wait time option
297         (NewTabBenchmark.initialize):
298         (NewTabBenchmark.run_iteration):
299         (NewTabBenchmark.group_init):
300         (NewTabBenchmark.will_parse_arguments):
301         (NewTabBenchmark.did_parse_arguments):
302         (NewTabBenchmark.ResponseHandler):
303         (NewTabBenchmark.ResponseHandler.Handler):
304         (NewTabBenchmark.ResponseHandler.Handler.get_test_page):
305         * LaunchTime/startup.py: Added
306         (StartupBenchmark): This benchmark measures browser startup time and initial page load time
307         (StartupBenchmark.initialize):
308         (StartupBenchmark.run_iteration):
309         (StartupBenchmark.ResponseHandler):
310         (StartupBenchmark.ResponseHandler.Handler):
311         (StartupBenchmark.ResponseHandler.Handler.get_test_page):
312         * LaunchTime/thirdparty/__init__.py: Added.
313         (AutoinstallImportHook): Auto installs tornado package for feedback server
314         (AutoinstallImportHook.__init__):
315         (AutoinstallImportHook._ensure_autoinstalled_dir_is_in_sys_path):
316         (AutoinstallImportHook.find_module):
317         (AutoinstallImportHook._install_tornado):
318         (AutoinstallImportHook.greater_than_equal_to_version):
319         (AutoinstallImportHook._install):
320         (AutoinstallImportHook.get_latest_pypi_url):
321         (AutoinstallImportHook.install_binary):
322         (autoinstall_everything):
323         (get_os_info):
324
325 2018-06-25  Jon Lee  <jonlee@apple.com>
326
327         [MotionMark] Add support for version numbers
328         https://bugs.webkit.org/show_bug.cgi?id=186479
329
330         Reviewed by Said Abou-Hallawa.
331
332         Add support for displaying the version number as well as including it in the JSON results.
333
334         When loading the front page, script replaces any element with classname version with the
335         version number of the benchmark, which is stored in Strings.version.
336
337         The JSON structure for the results includes a new version property:
338             {
339               "version": "1.0",
340               "options": { ... },
341               "data": [ ... ]
342             }
343
344         When dragging a results file, the version listed will come from the JSON file. Older
345         results will not have had the version property, in which case it will default to "1.0".
346
347         * MotionMark/index.html: Update title to some other default. Script will update it.
348         Include the version number in the logo title.
349         * MotionMark/developer.html: Ditto.
350         * MotionMark/about.html: Ditto.
351
352         * MotionMark/resources/runner/motionmark.js:
353         (ResultsDashboard): Update constructor to include version. This is used when serializing
354         results out to JSON, and displaying the results panel in developer mode.
355         (ResultsDashboard._processData): When running the benchmark, include benchmark version string
356         in the results object.
357         (ResultsDashboard.version):
358         (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the
359         benchmark version string to the dashboard, which holds the results.
360         (window.sectionsManager.setSectionVersion): Helper function to update the element in the
361         section with the class name version.
362         (window.benchmarkController.initialize): Populate all DOM elements with class name "version"
363         with the version string. Update the page title.
364         (window.benchmarkController.showResults): When showing results, update the version string
365         based on what is included in the JSON results, which would be the same as the benchmark version.
366         * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo
367         in a div and include the version string.
368         * MotionMark/resources/strings.js: Add strings for the page title template, and the version.
369
370         * MotionMark/resources/debug-runner/motionmark.css:
371         * MotionMark/resources/debug-runner/motionmark.js:
372         (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the
373         benchmark version string to the dashboard, which holds the results.
374         (window.benchmarkController.initialize): Populate all DOM elements with class name "version"
375         with the version string. Update the page title. When dragging in JSON results, look for
376         version to pass to the dashboard. If it doesn't exist, default to "1.0".
377         (window.benchmarkController.showResults): When showing results, update the version string
378         based on what is included in the JSON results, instead of the current benchmark version.
379         * MotionMark/resources/debug-runner/tests.js: Update page title template.
380
381 2018-06-08  Jon Lee  <jonlee@apple.com>
382
383         [MotionMark] Rename Suits test files
384         https://bugs.webkit.org/show_bug.cgi?id=186447
385
386         Reviewed by Said Abou-Hallawa.
387
388         * MotionMark/resources/runner/tests.js:
389         * MotionMark/tests/master/resources/suits.js: Renamed from PerformanceTests/MotionMark/tests/master/resources/svg-particles.js.
390         * MotionMark/tests/master/suits.html: Renamed from PerformanceTests/MotionMark/tests/master/svg-particles.html.
391         * MotionMark/tests/svg/suits.html:
392
393 2018-06-08  Jon Lee  <jonlee@apple.com>
394
395         Add sub-tests based on Suits
396         https://bugs.webkit.org/show_bug.cgi?id=186260
397
398         Reviewed by Said Abou-Hallawa.
399
400         Add a new developer Suits suite with sub-tests that isolate parts of each particle.
401         The sub-tests are:
402             - Particles using only clip paths
403             - Particles using only shapes
404             - Particles that have no gradients
405             - Particles that have no rotation
406             - Particles that do not move around at all (but all of the physics calculations are
407             still performed)
408
409         * MotionMark/resources/debug-runner/tests.js:
410         * MotionMark/tests/master/resources/svg-particles.js: Rename the stage, particle, and
411         benchmark to "Suits" from "SVG". Change SuitsParticle so that we guarantee 50% clip and
412         shape paths rather than relying on random chance. Wrap a check around creation of the
413         gradient element, and use a simple fill color when we aren't using a gradient.
414         * MotionMark/tests/svg/suits.html: Added.
415         * MotionMark/tests/svg/suits.js: Added.
416         Look for the query string and set the particle based on what is selected.
417
418 2018-06-06  Jon Lee  <jonlee@apple.com>
419
420         Allow the ramp controller to run tests that take less time than the initial ramp-up phase
421         https://bugs.webkit.org/show_bug.cgi?id=186257
422
423         Reviewed by Said Abou-Hallawa.
424
425         * MotionMark/tests/resources/main.js: Extend the desired end timestamp when ramp-up occurs.
426         Previously the controller assumed that the duration of the test was always longer than the
427         time it took to figure out the order of magnitude of particles to render. When that range
428         is determined, the end timestamp is then extended. If the duration is too short, the controller
429         would throw an exception. The fix is to continue extending the timestamp every time the order of
430         magnitude tiers up.
431
432         In general testing with really short durations isn't practical, but sometimes it is
433         desired for debugging.
434
435         To avoid confusion of the private variables, I renamed Benchmark._startTimestamp to
436         Benchmark._benchmarkStartTimestamp, to disambiguate from Controller._startTimestamp.
437         Benchmark._startTimestamp is set once and never changed, after the initial 100ms warm-up.
438         Controller._startTimestamp is initialized to 0 (which means "not initialized"), and then after
439         the warm up is complete, set in Controller.start() to the same wall clock timestamp, and never
440         changed afterwards.
441
442 2018-06-06  Jon Lee  <jonlee@apple.com>
443
444         Remove unneeded data processing in MotionMark
445         https://bugs.webkit.org/show_bug.cgi?id=186256
446
447         Reviewed by Said Abou-Hallawa.
448
449         Remove calculation of average frame rate based on multiple samples at a given complexity.
450         It is not used in the calculation of the score, and is just extra work to do at the end
451         of a test.
452
453         * MotionMark/developer.html: Remove options to show average data and regression based on
454         that data.
455         * MotionMark/resources/debug-runner/graph.js: Remove data. Update the time graph that
456         shows the relationship between the break point in the regression against the complexity
457         graph.
458         * MotionMark/resources/debug-runner/motionmark.css: Make the confidence intervals easier
459         to see.
460         * MotionMark/resources/runner/motionmark.js: Simplify score calculation now that we are
461         only calculating regressions on the raw data. We were calculating it based on the averages,
462         but that was just for analysis, and not used in the actual score. Get rid of the
463         |complexitySamples| local variable.
464         * MotionMark/resources/strings.js: Remove unneeded string constant.
465         * MotionMark/tests/resources/main.js:
466         (processSamples): Refactor so that more of it can be shared between Controller and
467         RampController. It also avoids processing the raw samples (controllerSamples) twice for
468         the ramp controller.
469         (_processComplexitySamples): Remove logic to calculate averages based on complexity.
470         (_processMarks): Split this out from the old processSamples.
471         (_processControllerSamples): Split this out from the old processSamples.
472
473 2018-06-06  Jon Lee  <jonlee@apple.com>
474
475         Strip out more characters when creating permalinks
476         https://bugs.webkit.org/show_bug.cgi?id=186259
477
478         Reviewed by Said Abou-Hallawa.
479
480         Tests and suites may have names that make permalinks to the tests less readable when
481         shared. Expand the set of characters that are stripped out of the names.
482
483         * MotionMark/resources/debug-runner/motionmark.js: Refactor to call
484         stripUnwantedCharactersForURL. For existing links, decode the suite and test names.
485         * MotionMark/resources/extensions.js:
486         (Utilities.stripUnwantedCharactersForURL): Rename from stripNonASCIICharacters.
487         Remove any non-alphanumeric character.
488
489 2018-06-04  Jon Lee  <jonlee@apple.com>
490
491         Remove unnecessary MotionMark controllers
492         https://bugs.webkit.org/show_bug.cgi?id=186255
493
494         Reviewed by Said Abou-Hallawa.
495
496         Get rid of the ramp30 and the fixed-with-a-step controllers, which aren't used for testing
497         or debugging.
498
499         * MotionMark/developer.html: Move the "ramp" option as first, since that is the default
500         controller for the benchmark.
501         * MotionMark/resources/debug-runner/motionmark.js:
502         * MotionMark/resources/runner/motionmark.js: Added missing copyright notice.
503         * MotionMark/tests/resources/main.js:
504
505 2018-05-25  Myles C. Maxfield  <mmaxfield@apple.com>
506
507         Improve the performance of Font::canRenderCombiningCharacterSequence()
508         https://bugs.webkit.org/show_bug.cgi?id=185933
509
510         Reviewed by Ryosuke Niwa.
511
512         * Layout/ComplexLongUnique.html: Added.
513
514 2018-05-25  Saam Barati  <sbarati@apple.com>
515
516         Have a memory test where we can validate JSCs mini memory mode
517         https://bugs.webkit.org/show_bug.cgi?id=185932
518
519         Reviewed by Mark Lam.
520
521         We add a directory here with the contents of the testmem benchmark.
522         To run it, use `Tools/Scripts/run-testmem`. To add new tests in the future,
523         you just need to add JS files to this directory.
524
525         * testmem: Added.
526         * testmem/air.js: Added.
527         * testmem/base64.js: Added.
528         * testmem/basic.js: Added.
529         * testmem/box2d.js: Added.
530         * testmem/crypto-md5.js: Added.
531         * testmem/date-format-tofte.js: Added.
532         * testmem/earley-boyer.js: Added.
533         * testmem/hash-map.js: Added.
534         * testmem/regex-dna.js: Added.
535         * testmem/splay.js: Added.
536         * testmem/tagcloud.js: Added.
537
538 2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>
539
540         Unreviewed, rolling out r232052.
541
542         Breaks internal builds.
543
544         Reverted changeset:
545
546         "Use more C++17"
547         https://bugs.webkit.org/show_bug.cgi?id=185176
548         https://trac.webkit.org/changeset/232052
549
550 2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>
551
552         Use more C++17
553         https://bugs.webkit.org/show_bug.cgi?id=185176
554
555         Reviewed by JF Bastien.
556
557         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
558         * MediaTime/Configurations/Base.xcconfig:
559         * MediaTime/MediaTime.xcodeproj/project.pbxproj:
560
561 2018-04-30  Myles C. Maxfield  <mmaxfield@apple.com>
562
563         Improve the performance of FontCascadeDescription's effectiveFamilies
564         https://bugs.webkit.org/show_bug.cgi?id=184720
565
566         Reviewed by Simon Fraser.
567
568         This performance test calls SystemFontDatabase::systemFontCascadeList() around 2,000,000 times (before
569         this patch is applied), which is roughly equivalent to the page we found the performance problem on.
570         The calling pattern is roughly equivalent in this test.
571
572         * Layout/system-ui.html: Added.
573
574 2018-03-08  Antti Koivisto  <antti@apple.com>
575
576         Update StyleBench version number in page title to 0.3
577
578         * StyleBench/index.html:
579
580         There has been a bunch of changes, most notably the addition of attribute selector test step.
581
582 2018-02-16  Dean Jackson  <dino@apple.com>
583
584         Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
585         https://bugs.webkit.org/show_bug.cgi?id=182894
586
587         Reviewed by Tim Horton.
588
589         Rename OPENGL_ES_2 to OPENGL_ES.
590
591         * StitchMarker/wtf/Platform.h:
592
593 2018-02-09  Ryosuke Niwa  <rniwa@webkit.org>
594
595         Make run-perf-tests work with Speedometer 2.0 and re-enable the test
596         https://bugs.webkit.org/show_bug.cgi?id=182088
597
598         Reviewed by Antti Koivisto.
599
600         This patch updates the test harness to report new metrics of Speedometer 2.0.
601
602         Replaced the total time by the geometric mean of the time spent in each suite, and added scores
603         as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template
604         to support "Score" metric with "pt" as its unit.
605
606         * Skipped: Unskipped the test.
607         * Speedometer/resources/benchmark-report.js:
608         (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument
609         to report the score in addition to time. Also report the geomean of time instead of the total time.
610         (window.benchmarkClient.willStartFirstIteration): Report the geomean of time.
611         (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests.
612         (window.benchmarkClient.didFinishLastIteration): Report the scores.
613
614 2018-02-09  Ross Kirsling  <ross.kirsling@sony.com>
615
616         Use REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port.
617         https://bugs.webkit.org/show_bug.cgi?id=182623
618
619         Reviewed by Alex Christensen.
620
621         * StitchMarker/wtf/Platform.h:
622         Simplify #if.
623
624 2018-02-01  Antti Koivisto  <antti@apple.com>
625
626         StyleBench: Attribute selectors and other improvements
627         https://bugs.webkit.org/show_bug.cgi?id=182387
628
629         Reviewed by Joseph Pecoraro.
630
631         - Add some attributes to elements in all tests
632         - Add some attribute selectors to stylesheets in all tests
633         - Also add some * selectors to all stylesheets.
634         - Add attribute mutation step to all suites
635         - Make test steps do more mutations (25->100) and reduce the number of steps to keep testing time in check.
636           Too fast steps were running into timer resolution limits.
637
638         * StyleBench/resources/style-bench.js:
639         (defaultConfiguration):
640         (prototype.randomAttributeName):
641         (prototype.randomAttributeValue):
642         (prototype.randomAttributeSelector):
643         (prototype.makeCompoundSelector):
644         (prototype.makeElement):
645         (prototype.addClasses):
646         (prototype.removeClasses):
647         (prototype.mutateAttributes):
648         (prototype.async.runForever):
649         * StyleBench/resources/tests.js:
650         (makeSteps):
651         (makeSuite):
652
653 2018-02-01  Geoffrey Garen  <ggaren@apple.com>
654
655         Make MallocBench easier for non-WebKit engineers to run
656         https://bugs.webkit.org/show_bug.cgi?id=182415
657
658         Reviewed by Saam Barati.
659
660         * MallocBench/MallocBench.xcodeproj/project.pbxproj: Use c++14 so we
661         can make_unique.
662
663         Specify that we support all Darwin platforms so you can test them.
664
665         * MallocBench/run-malloc-benchmarks: Specify the path to MallocBench
666         and libmbmalloc explicitly, rather than computing them implicitly
667         using webkitdirs. Non-WebKit folks don't have the directory structure
668         required by webkitdirs.
669
670         Remove Linux-specific and cmake-specific behaviors because we only
671         needed them in the world of implicit path computation.
672
673 2018-01-31  Ryosuke Niwa  <rniwa@webkit.org>
674
675         Make run-perf-tests work with StyleBench and re-enable it
676         https://bugs.webkit.org/show_bug.cgi?id=182322
677
678         Reviewed by Antti Koivisto.
679
680         This patch updates the test harness to report new metrics of StyleBench.
681
682         Replaced the total time by the geometric mean of the time spent in each suite, and added scores
683         as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template
684         to support "Score" metric with "pt" as its unit.
685
686         * Skipped: Unskipped the test.
687         * StyleBench/resources/benchmark-report.js:
688         (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument
689         to report the score in addition to time. Also report the geomean of time instead of the total time.
690         (window.benchmarkClient.willStartFirstIteration): Report the geomean of time.
691         (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests.
692         (window.benchmarkClient.didFinishLastIteration): Report the scores.
693         * resources/results-template.html: Added "Score" as a metric and "pt" as its unit.
694         * resources/runner.js:
695         (PerfTestRunner..finish): Ditto.
696
697 2018-01-30  Ryosuke Niwa  <rniwa@webkit.org>
698
699         StyleBench: Generate more mutation steps
700         https://bugs.webkit.org/show_bug.cgi?id=182291
701
702         Rubber-stamped by Antti Koivisto
703
704         Use zero-based index instead of one-based index.
705
706         * StyleBench/resources/tests.js:
707         (makeSteps):
708
709 2018-01-30  Antti Koivisto  <antti@apple.com>
710
711         StyleBench: Generate more mutation steps
712         https://bugs.webkit.org/show_bug.cgi?id=182291
713
714         Reviewed by Ryosuke Niwa.
715
716         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).
717         This also makes test results more stable and less dependent on possible first-time costs.
718
719         * StyleBench/resources/benchmark-runner.js:
720
721         Adjust correctionFactor to match the new steps count. With 1.5 Firefox is ~72rpm.
722
723         * StyleBench/resources/tests.js:
724         (makeSteps):
725
726         Generate 10 rounds of class/element mutation steps.
727         Give each generated step unique name so reporting works.
728         Make individual steps do fewer mutations.
729
730 2018-01-29  Antti Koivisto  <antti@apple.com>
731
732         StyleBench: Remove : from a test name
733         https://bugs.webkit.org/show_bug.cgi?id=182258
734
735         Reviewed by Ryosuke Niwa.
736
737         It breaks reporting.
738
739         * StyleBench/resources/style-bench.js:
740         (nthPseudoClassConfiguration):
741
742 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
743
744         Temporarily skip StyleBench until webkit.org/b/182088 is fixed.
745
746         * Skipped:
747
748 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
749
750         Make StyleBench compatible with run-benchmark and run-perf-tests
751         https://bugs.webkit.org/show_bug.cgi?id=182262
752
753         Reviewed by Antti Koivisto.
754
755         Copied resource files referenced from Speedometer directory since run-benchmark needs to be able
756         to checkout each benchmark separately.
757
758         Removed the code to create tests of the same name five times in makeSteps since this
759         won't be compatible with either run-benchmark or run-perf-tests.
760
761         * StyleBench/index.html: Removed the code to show warnings for local files since run-benchmark
762         doesn't use HTTP server in WebDriver mode.
763         * StyleBench/resources/benchmark-report.js: Copied from resources/benchmark-report.js.
764         * StyleBench/resources/benchmark-runner.js: Copied from resources/benchmark-runner.js.
765         (BenchmarkRunner.prototype._finalize): Use the correction factor of 8 instead of 5 in StyleBench.
766         * StyleBench/resources/gauge.png: Copied from resources/gauge.png.
767         * StyleBench/resources/gauge@2x.png: Copied from resources/gauge@2x.png.
768         * StyleBench/resources/main.css: Copied from resources/main.css.
769         * StyleBench/resources/main.js: Copied from resources/main.js.
770         * StyleBench/resources/tests.js:
771         (makeSteps): Only make each test once.
772
773 2018-01-26  Chris Nardi  <cnardi@chromium.org>
774
775         Addressing post-review comments after r226614
776         https://bugs.webkit.org/show_bug.cgi?id=182151
777
778         Reviewed by Myles C. Maxfield.
779
780         * StitchMarker/wtf/text/StringImpl.h:
781         (WTF::isSpaceOrNewline):
782         * StitchMarker/wtf/text/TextBreakIterator.cpp:
783         (WTF::numCodeUnitsInGraphemeClusters):
784         * StitchMarker/wtf/text/TextBreakIterator.h:
785
786 2018-01-22  Antti Koivisto  <antti@apple.com>
787
788         StyleBench: Separate test for :nth pseudo classes
789         https://bugs.webkit.org/show_bug.cgi?id=181932
790
791         Reviewed by Sam Weinig.
792
793         Optimization strategies for nth are different from other structural pseudo classes (:first-child etc). Move them to a separate test.
794
795         * StyleBench/resources/style-bench.js:
796         (structuralPseudoClassConfiguration):
797         (nthPseudoClassConfiguration):
798
799             Add a new configuration.
800
801         (predefinedConfigurations):
802         (pseudoClassConfiguration): Deleted.
803
804 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
805
806         Temporarily skip Speedometer until we fix the metrics.
807
808         * Skipped:
809
810 2018-01-16  Alex Christensen  <achristensen@webkit.org>
811
812         Fix Mac CMake build after r222900
813
814         * MallocBench/MallocBench/CMakeLists.txt:
815         The mbmalloc target doesn't exist if we're not in developer mode, so only use it if we are.
816
817 2018-01-09  Ryosuke Niwa  <rniwa@webkit.org>
818
819         Speedometer 2.0: Update the About page.
820         https://bugs.webkit.org/show_bug.cgi?id=175918
821
822         Reviewed by Keith Miller.
823
824         Updated the about page for Speedometer 2.0.
825
826         * Speedometer/index.html:
827
828 == Rolled over to ChangeLog-2018-01-01 ==