blob: 087152d53aaed2394d859938e2192cf35cef5011 [file] [log] [blame]
2017-07-14 Saam Barati <sbarati@apple.com>
Fix ambiguous description text in ARES-6 about the data the benchmark measures
https://bugs.webkit.org/show_bug.cgi?id=174510
Rubber stamped by Filip Pizlo.
* ARES-6/about.html:
2017-07-07 Mathias Bynens <mathias@qiwi.be>
Speedometer 2.0: Fix vanilla JS example
https://bugs.webkit.org/show_bug.cgi?id=174246
Reviewed by Ryosuke Niwa.
Previously, all TODO items were assigned an ID of `null`. This patch
fixes that bug. Manually deleting items now works again.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/index.html: Made title consistent.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/store.js: Fixed bug with deleting items.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md: Added docs.
2017-07-06 Myles C. Maxfield <mmaxfield@apple.com>
[Cocoa] Improve performance of font lookups
https://bugs.webkit.org/show_bug.cgi?id=173960
<rdar://problem/31996891>
Reviewed by Darin Adler.
* Layout/font-fallback-font-family.html: Added.
* Layout/resources/font-fallback-font-family.html: Added.
2017-06-10 Dan Bernstein <mitz@apple.com>
Reverted r218056 because it made the IDE reindex constantly.
* MediaTime/Configurations/DebugRelease.xcconfig:
2017-06-10 Dan Bernstein <mitz@apple.com>
[Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
https://bugs.webkit.org/show_bug.cgi?id=173223
Reviewed by Sam Weinig.
The rebuilds were happening due to a difference in the compiler options that the IDE and
xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
specify an appropriate path in CLANG_INDEX_STORE_PATH.
* MediaTime/Configurations/DebugRelease.xcconfig:
2017-06-07 Saam Barati <sbarati@apple.com>
ARES-6 incorrectly measures Worst 4 Iterations
https://bugs.webkit.org/show_bug.cgi?id=172960
Reviewed by Mark Lam.
Version 1.0 of ARES-6 was accidentally measuring the first
4 iterations, instead of the worst 4. This patch fixes the
bug and bumps the version to 1.0.1.
* ARES-6/glue.js:
(driver.reportResult):
* ARES-6/results.js:
(Results.prototype.reportResult):
2017-06-06 Saam Barati <sbarati@apple.com>
Add a version number to ARES-6
https://bugs.webkit.org/show_bug.cgi?id=172962
Reviewed by Yusuke Suzuki.
* ARES-6/glue.js:
(driver.reportResult):
2017-06-01 Saam Barati <sbarati@apple.com>
Ensure a good experience for ARES-6 error reporting
https://bugs.webkit.org/show_bug.cgi?id=171699
Reviewed by Filip Pizlo and Jon Davis.
This patch fixes a bug where we would silently fail running ARES-6. The bug
was that we were calling reportError with the wrong |this| value.
I also cleaned up a bit of the code around error reporting. We
now indicate which test failed, and update the status to reflect
that a failure happened.
This patch also modifies the CSS a bit to work better on smaller
screened devices. The CSS prevents the status from having a line
break both when an error is reported and when we're running the
benchmark.
* ARES-6/driver.js:
(Driver):
(Driver.prototype.reportError):
* ARES-6/results.js:
(Results.prototype.reportError):
(Results):
* ARES-6/styles.css:
(.start):
(#status):
(.failed):
(#status.failed):
(.test .failed:before):
(#magic):
(@media only screen and (max-width: 784px)):
(.test):
(p):
(@media only screen and (max-width: 320px)):
2017-05-19 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION(r217118): Speedometer 2.0: Flight.js test is broken
https://bugs.webkit.org/show_bug.cgi?id=172394
Reviewed by Chris Dumez.
Fixed the bug that we were never clearing window.checkLoadedTimeoutId.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js:
(newContext.checkLoaded):
2017-05-19 Yusuke Suzuki <utatane.tea@gmail.com>
Add SixSpeed benchmark to PerformanceTests
https://bugs.webkit.org/show_bug.cgi?id=172326
Reviewed by Sam Weinig.
This patch imports SixSpeed benchmark into WebKit tree.
It is a collection of ES6 microbenchmarks. While the scripts are very tiny,
it sometimes hits our missing care for optimization. So including it is useful.
The benchmark is released under MIT license.
* SixSpeed/LICENSE: Added.
* SixSpeed/REVISION: Added.
* SixSpeed/ReadMe.md: Added.
* SixSpeed/tests/.eslintrc: Added.
* SixSpeed/tests/arrow-args/arrow-args.es5: Added.
* SixSpeed/tests/arrow-args/arrow-args.es6: Added.
* SixSpeed/tests/arrow-declare/arrow-declare.es5: Added.
* SixSpeed/tests/arrow-declare/arrow-declare.es6: Added.
* SixSpeed/tests/arrow/arrow.es5: Added.
* SixSpeed/tests/arrow/arrow.es6: Added.
* SixSpeed/tests/bindings-compound/bindings-compound.es5: Added.
* SixSpeed/tests/bindings-compound/bindings-compound.es6: Added.
* SixSpeed/tests/bindings/bindings.es5: Added.
* SixSpeed/tests/bindings/bindings.es6: Added.
* SixSpeed/tests/classes/classes.es5: Added.
* SixSpeed/tests/classes/classes.es6: Added.
* SixSpeed/tests/defaults/defaults.es5: Added.
* SixSpeed/tests/defaults/defaults.es6: Added.
* SixSpeed/tests/destructuring-simple/destructuring-simple.es5: Added.
* SixSpeed/tests/destructuring-simple/destructuring-simple.es6: Added.
* SixSpeed/tests/destructuring/destructuring.es5: Added.
* SixSpeed/tests/destructuring/destructuring.es6: Added.
* SixSpeed/tests/for-of-array/for-of-array.es5: Added.
* SixSpeed/tests/for-of-array/for-of-array.es6: Added.
* SixSpeed/tests/for-of-object/for-of-object.es5: Added.
* SixSpeed/tests/for-of-object/for-of-object.es6: Added.
* SixSpeed/tests/generator/generator.es5: Added.
* SixSpeed/tests/generator/generator.es6: Added.
* SixSpeed/tests/map-set-lookup/map-set-lookup.es5: Added.
* SixSpeed/tests/map-set-lookup/map-set-lookup.es6: Added.
* SixSpeed/tests/map-set-object/map-set-object.es5: Added.
* SixSpeed/tests/map-set-object/map-set-object.es6: Added.
* SixSpeed/tests/map-set/map-set.es5: Added.
* SixSpeed/tests/map-set/map-set.es6: Added.
* SixSpeed/tests/map-string/map-string.es5: Added.
* SixSpeed/tests/map-string/map-string.es6: Added.
* SixSpeed/tests/new-target/defaults.es5: Added.
* SixSpeed/tests/new-target/defaults.es6: Added.
* SixSpeed/tests/object-assign/object-assign.es5: Added.
* SixSpeed/tests/object-assign/object-assign.es6: Added.
* SixSpeed/tests/object-literal-ext/object-literal-ext.es5: Added.
* SixSpeed/tests/object-literal-ext/object-literal-ext.es6: Added.
* SixSpeed/tests/regex-u/regex-u.es5: Added.
* SixSpeed/tests/regex-u/regex-u.es6: Added.
* SixSpeed/tests/rest/rest.es5: Added.
* SixSpeed/tests/rest/rest.es6: Added.
* SixSpeed/tests/spread-generator/spread-generator.es5: Added.
* SixSpeed/tests/spread-generator/spread-generator.es6: Added.
* SixSpeed/tests/spread-literal/spread-literal.es5: Added.
* SixSpeed/tests/spread-literal/spread-literal.es6: Added.
* SixSpeed/tests/spread/spread.es5: Added.
* SixSpeed/tests/spread/spread.es6: Added.
* SixSpeed/tests/super/super.es5: Added.
* SixSpeed/tests/super/super.es6: Added.
* SixSpeed/tests/template_string/template_string.es5: Added.
* SixSpeed/tests/template_string/template_string.es6: Added.
* SixSpeed/tests/template_string_tag/template_string_tag.es5: Added.
* SixSpeed/tests/template_string_tag/template_string_tag.es6: Added.
* SixSpeed/wrappers/wrapper.js:
(test):
2017-05-19 Ryosuke Niwa <rniwa@webkit.org>
Speedometer 2.0: Angular v1 test only deletes the second item
https://bugs.webkit.org/show_bug.cgi?id=172353
Reviewed by Antti Koivisto.
Like jQuery and Inferno, run querySelector after removing each todo item.
* Speedometer/InteractiveRunner.html: Tweaked CSS again.
* Speedometer/resources/tests.js:
2017-05-19 Ryosuke Niwa <rniwa@webkit.org>
Speedometer 2.0: Elem test isn't updating DOM during the measurement
https://bugs.webkit.org/show_bug.cgi?id=172343
Reviewed by Antti Koivisto.
Elem test wasn't doing much work because it simply enqueues items into the work queue, which doesn't get
executed until the next requestAnimationFrame or setTimeout callback happens.
Expose elm's work function as contentWindow.elemWork and make the first use of rAF a synchronous callback
just as it would when requestAnimationFrame isn't defined, and make the second use of rAF queue up to
an array of callbacks, and have the test runner manually invoke each callback.
This increases the runtime of the Elm suite from 100ms to 300ms on Safari.
* Speedometer/resources/tests.js:
(processElmWorkQueue): Added. A helper which processes Elm's work queue and manually invokes render callbacks.
* Speedometer/resources/todomvc/functional-prog-examples/elm/dist/elm.js:
2017-05-18 Ryosuke Niwa <rniwa@webkit.org>
Speedometer 2.0: Flight.js test is sometime broken
https://bugs.webkit.org/show_bug.cgi?id=172347
Reviewed by Antti Koivisto.
The bug was caused by the test runner only waiting for #new-todo, which happens before all other states are
updated in the Flight.js dependency example. As done in Speedometer v1, insert a dummy element with id set
to appIsReady and wait for this element to appear in the benchmark harness.
* Speedometer/resources/tests.js: Wait for #appIsReady.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/main.js: Removed the superflous call
to console.log.
(checkReady): Added. Insert #appIsReady if checkLoaded is no longer running at 50ms interval. Because this
could happen asynchronously, we check the absense of checkLoadedTimeoutId Ωevery 10ms for 5 times for
the total duration of 50ms. If checkLoadedTimeoutId was never present, we call it ready. If we ever observed
the presence of checkLoadedTimeoutId, wait another 50ms and start over.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js:
(.newContext.checkLoaded): Expose checkLoadedTimeoutId which is a timer ID used to check the dependency.
2017-05-19 Ryosuke Niwa <rniwa@webkit.org>
Speedometer 2.0: jQuery and Inferno tests don't delete all ToDo items
https://bugs.webkit.org/show_bug.cgi?id=172341
Reviewed by Antti Koivisto.
The bug was caused by the fact TodoMVC examples for jQuery and Inferno JS create a new button
to delete the todo item each time todo items are rendered.
Fixed the bug by dynamically look for .destroy using querySelector for each item.
Also moved the deletion of the iframe from the end of each test suite to the beginning of each suite.
This will make debugging the issue like this easier on InteractiveRunner.html since the iframe
will stick around after stepping the last item in the suite.
* Speedometer/InteractiveRunner.html: Tweaked the CSS to make buttons to "Step" and "Run" always visible
even if the list of suites and subtests are too long to fit in the viewport.
* Speedometer/resources/benchmark-runner.js:
(BenchmarkRunner.prototype.step):
(BenchmarkRunner.prototype._runTestAndRecordResults):
* Speedometer/resources/tests.js: Fixed the bug for jQuery and Inferno. In the case of jQuery
we also have to fix the code for checking every ToDo item as completed as well.
2017-05-19 Ryosuke Niwa <rniwa@webkit.org>
Speedometer 2.0: Vanilla JS test doesn't mark all todo items as completed
https://bugs.webkit.org/show_bug.cgi?id=172348
Reviewed by Antti Koivisto.
The bug was caused by the in-memory store class using the milisecond precision timestamp as an ID.
Because we inserts 50 items all at once, this can result in multiple data items sharing a single ID.
Fixed the bug by using a mononotically increasing ID instead.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/store.js:
(Store.prototype.save):
2017-05-18 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION (r216694 - 216712): Performance test Speedometer/Full.html is failing
https://bugs.webkit.org/show_bug.cgi?id=172077
Reviewed by Chris Dumez.
Rename Full.html to index.html to match the convention of other benchmarks.
* Speedometer/index.html: Renamed from PerformanceTests/Speedometer/Full.html.
2017-05-18 Addy Osmani <addyosmani@gmail.com>
Speedometer: check-in missing React TodoMVC dependency
https://bugs.webkit.org/show_bug.cgi?id=172213
Reviewed by Ryosuke Niwa.
* Speedometer/resources/todomvc/architecture-examples/react/index.html: fix director.min.js path.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/director.min.js: Added.
2017-05-17 Addy Osmani <addyosmani@gmail.com>
Speedometer: adjust Ember TodoMVC to use full path
https://bugs.webkit.org/show_bug.cgi?id=172211
Reviewed by Ryosuke Niwa.
* Speedometer/resources/tests.js: use full path to Ember TodoMVC app.
2017-05-16 Addy Osmani <addyosmani@gmail.com>
Update to Speedometer 2.0 w/updated frameworks + new workloads
https://bugs.webkit.org/show_bug.cgi?id=170513
Reviewed by Ryosuke Niwa.
Refresh test runner and fix apps to work with it.
* Speedometer/InteractiveRunner.html:
(parseQueryString): Adds support for startAutomatically query parameter.
* Speedometer/resources/tests.js:
(triggerEnter): Refactor event triggering behavior for tests.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html:
(CSS): Drop reference to extraneous stylesheet in Angular TodoMVC.
* Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.js:
* Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:
(base): Enable Ember TodoMVC to be run from any directory/level.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/memory.js:
(localStorageMemory): Correct import path and switch to window.localStorageMemory to fix Ember failures.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js:
* Speedometer/resources/todomvc/architecture-examples/emberjs/tests/index.html:
* Speedometer/resources/todomvc/architecture-examples/jquery/index.html:
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/LICENSE: Added.
(LICENSE): Add missing metadata and LICENSE files as part of director.js package for jQuery TodoMVC
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/bower.json: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.js: Add missing
director.js dependency for jQuery TodoMVC implementation.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.min.js: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/ender.js: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/package.json: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/index.html: Fix path to built Elm TodoMVC scripts.
2017-05-12 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add a React.js TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171444
Reviewed by Ryosuke Niwa.
Adds a more recent React.js TodoMVC implemenation to Speedometer
* Speedometer/resources/todomvc/architecture-examples/react/build.min.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/react/js/app.jsx: Added.
* Speedometer/resources/todomvc/architecture-examples/react/license.md: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/LICENSE: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/bind.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/bower.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/dedupe.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/LICENSE: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/bower.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/LICENSE: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/dist/react-dom-server.min.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/dist/react-dom.min.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/LICENSE: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/README.md: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/dist/react-with-addons.min.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/dist/react.min.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react/npm-shrinkwrap.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react/yarn.lock: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Update the Ember.js TodoMVC to a more recent version
https://bugs.webkit.org/show_bug.cgi?id=171342
Reviewed by Ryosuke Niwa.
Update the Ember TodoMVC app in Speedometer to latest
* Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.css: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/assets/vendor.css: Renamed from PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css.
* Speedometer/resources/todomvc/architecture-examples/emberjs/assets/vendor.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower.json: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/ember-data/ember-data.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/bg.png: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/crossdomain.xml: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/app.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/helpers/pluralize.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/models/todo.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/router.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/js/views/todos_view.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/readme.md: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/robots.txt: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/.bowerrc: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/.editorconfig: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/.ember-cli: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/.gitignore: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/.jshintrc: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/.travis.yml: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/.watchmanconfig: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/README.md: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/app.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/components/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/components/todo-item.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/components/todo-list.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/controllers/active.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/controllers/application.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/controllers/completed.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/helpers/gt.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/helpers/pluralize.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/instance-initializers/global.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/models/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/resolver.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/router.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/routes/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/routes/application.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/memory.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/styles/app.css: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/active.hbs: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/application.hbs: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/completed.hbs: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/todo-item.hbs: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/todo-list.hbs: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/index.hbs: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/bower.json: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/config/environment.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/ember-cli-build.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/public/crossdomain.xml: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/public/robots.txt: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/testem.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/.jshintrc: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/destroy-app.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/module-for-acceptance.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/resolver.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/start-app.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/integration/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/test-helper.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/unit/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/vendor/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/vendor/base.css: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/source/vendor/index.css: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/test.html: Removed.
* Speedometer/resources/todomvc/architecture-examples/emberjs/testem.js: Added.
* Speedometer/resources/todomvc/architecture-examples/emberjs/tests/index.html: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add a React + Redux TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171329
Reviewed by Ryosuke Niwa.
Adds React and Redux TodoMVC implementation for Speedometer
* Speedometer/resources/todomvc/architecture-examples/react-redux/README.md: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/dist/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.d43d2909.css: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.946269ff.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/public/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/actions/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/actions/index.spec.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Footer.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Footer.spec.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Header.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Header.spec.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/MainSection.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/MainSection.spec.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoItem.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoItem.spec.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoTextInput.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoTextInput.spec.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/constants/ActionTypes.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/constants/TodoFilters.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/containers/App.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js: Added.
* Speedometer/resources/todomvc/architecture-examples/react-redux/yarn.lock: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add an ES2015 (Babel + Webpack) TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171452
Reviewed by Ryosuke Niwa.
Adds ES2015 Babel + Webpack TodoMVC implem
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/.babelrc: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/.eslintignore: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/index.html: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package.json: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/app.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/app.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/bootstrap.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/controller.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/controller.test.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/helpers.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/index.html: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/memory.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/model.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/template.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/todo.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/view.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/webpack.config.babel.js: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add an Inferno TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171411
Reviewed by Ryosuke Niwa.
Adds a Inferno implem of TodoMVC to Speedometer
* Speedometer/resources/todomvc/architecture-examples/inferno/dist/bundle.js: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/readme.md: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/readme.md: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/src/base.js: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/src/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/src/item.js: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/src/model.js: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/src/share.js: Added.
* Speedometer/resources/todomvc/architecture-examples/inferno/webpack.config.js: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add an Angular 2 (4.x) TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171343
Reviewed by Ryosuke Niwa.
Add a TodoMVC Angular 2 (4.x) implem for the benchmark
* Speedometer/resources/todomvc/architecture-examples/angular/.angular-cli.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/.editorconfig: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/README.md: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-app.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-common.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/favicon.ico: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/inline.b342d102ba4a53bf2002.bundle.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/main.779eb2f1ddbe23ac61c7.bundle.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/polyfills.2d45a4c73c85e24fe474.bundle.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/dist/vendor.b4be818cb6d8028f9192.bundle.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/e2e/app.e2e-spec.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/e2e/app.po.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/e2e/tsconfig.e2e.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/karma.conf.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/protractor.conf.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.html: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.spec.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.module.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.spec.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/assets/.gitkeep: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-app.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-common.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.prod.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/favicon.ico: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/main.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/polyfills.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/styles.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/test.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.app.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.spec.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/src/typings.d.ts: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/tsconfig.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angular/tslint.json: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add a Vue.js TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171325
Reviewed by Ryosuke Niwa.
Adds a Vue.js TodoMVC implementation to Speedometer
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.babelrc: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.editorconfig: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.eslintignore: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.eslintrc.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/dev.env.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/prod.env.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.677b45842d9f8b96e5b23c18969233b7.css: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.b0e835874bc8949670d1.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.84b2b4fceb74ab1f91f3.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.a52517c5aa98e7fbea2e.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/App.vue: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/Todos.vue: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/todo.css: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/main.js: Added.
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/yarn.lock: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Update the vanilla JavaScript TodoMVC implem to a more recent version
https://bugs.webkit.org/show_bug.cgi?id=171306
Reviewed by Ryosuke Niwa.
Update vanilla JS TodoMVC implementation to the latest.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower.json: Removed.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css: Removed.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.js: Removed.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/bg.png: Removed.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/index.html:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/app.js:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/controller.js:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/helpers.js:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/model.js:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/store.js:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/template.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/view.js:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/package.json: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add an ES2015 TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171448
Reviewed by Ryosuke Niwa.
Adds ES2015 TodoMVC implementation for Speedometer
* Speedometer/resources/todomvc/vanilla-examples/es2015/index.html: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/package.json: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/readme.md: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/package.json: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/readme.md: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/package.json: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/.jshintrc: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/app.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/controller.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/helpers.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/model.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/store.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/template.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/view.js: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add an Elm TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171464
Reviewed by Ryosuke Niwa.
Speedometer: Add Elm TodoMVC implementation
* Speedometer/resources/todomvc/functional-prog-examples/elm/Todo.elm: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/Todo/Task.elm: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/dist/elm.js: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/index.html: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/package.json: Added.
* Speedometer/resources/todomvc/functional-prog-examples/elm/readme.md: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Update the Backbone.js implementation to a more recent library version
https://bugs.webkit.org/show_bug.cgi?id=171305
Reviewed by Ryosuke Niwa.
Updates the Backbone.js TodoMVC implementation to latest
* Speedometer/resources/todomvc/architecture-examples/backbone/bower.json: Removed.
* Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage/backbone.localStorage.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/jquery/jquery.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css: Removed.
* Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/bg.png: Removed.
* Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/underscore/underscore.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/backbone/index.html:
* Speedometer/resources/todomvc/architecture-examples/backbone/js/app.js:
* Speedometer/resources/todomvc/architecture-examples/backbone/js/backbone.sync.js: Added.
* Speedometer/resources/todomvc/architecture-examples/backbone/js/collections/todos.js:
* Speedometer/resources/todomvc/architecture-examples/backbone/js/models/todo.js:
* Speedometer/resources/todomvc/architecture-examples/backbone/js/routers/router.js:
* Speedometer/resources/todomvc/architecture-examples/backbone/js/views/app-view.js:
* Speedometer/resources/todomvc/architecture-examples/backbone/js/views/todo-view.js:
* Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/backbone/backbone.js.
* Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js: Added.
* Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore.js: Added.
* Speedometer/resources/todomvc/architecture-examples/backbone/package.json: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Add a Preact.js TodoMVC implementation
https://bugs.webkit.org/show_bug.cgi?id=171323
Reviewed by Ryosuke Niwa.
Adds Preact.js TodoMVC implementation to Speedometer
* Speedometer/resources/todomvc/architecture-examples/preact/.babelrc: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/README.md: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/dist/app.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/dist/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc.css: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/rollup.config.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/src/app/footer.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/src/app/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/src/app/item.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/src/app/model.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/src/app/util.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/src/index.html: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/src/index.js: Added.
* Speedometer/resources/todomvc/architecture-examples/preact/webpack.config.babel.js: Added.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Update the jQuery implementation to a more recent library version
https://bugs.webkit.org/show_bug.cgi?id=171308
Reviewed by Ryosuke Niwa.
Updates the jQuery implementation of TodoMVC to a more recent version
* Speedometer/resources/todomvc/architecture-examples/jquery/bower.json: Removed.
* Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/handlebars/handlebars.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/jquery/jquery.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css: Removed.
* Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/bg.png: Removed.
* Speedometer/resources/todomvc/architecture-examples/jquery/index.html:
* Speedometer/resources/todomvc/architecture-examples/jquery/js/app.js:
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/handlebars/dist/handlebars.js: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/jquery/dist/jquery.js: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/readme.md: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/readme.md: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/jquery/readme.md:
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Update the Flight.js implementation to a more recent library version
https://bugs.webkit.org/show_bug.cgi?id=171471
Reviewed by Ryosuke Niwa.
Speedometer: Update FlightJS TodoMVC implementation
* Speedometer/resources/todomvc/dependency-examples/flight/.gitignore: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/.jshintrc: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/app/js/main.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/app/js/store.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower.json: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-shim.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/compose.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/index.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/logger.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower_components/jquery/jquery.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/bg.png: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/stats.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/data/stats.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/todos.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/data/todos.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/main.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/page/app.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/app.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/store.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/main_selector.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/main_selector.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/new_item.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/new_item.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/stats.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/stats.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/todo_list.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/todo_list.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/toggle_all.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/toggle_all.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/with_filters.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/with_filters.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/utils.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/utils.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/stats.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/templates/stats.html.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/todo.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/templates/todo.html.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/index.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/index.html.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/README.md: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/depot/depot.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.min.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/package.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/LICENSE: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-sham.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.min.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.min.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/LICENSE: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/index.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/advice.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/advice.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/base.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/base.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/component.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/component.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/compose.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/debug.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/debug.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/logger.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/registry.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/registry.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/utils.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/utils.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/README.md: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.min.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/package.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/memorystorage/memorystorage.js: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/LICENSE: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/README.md: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/bower.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/package.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/text.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text/text.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/README.md: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/package.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/requirejs/require.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/package.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/readme.md: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.js.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/package.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/readme.md: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/flight/package.json: Added.
* Speedometer/resources/todomvc/dependency-examples/flight/karma.conf.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/package.json: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/readme.md: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/.jshintrc: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/footer.html: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/new_todo.html: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/toggle_all.html: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/mock/datastore.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/spec/data/stats_spec.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/spec/data/todos_spec.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/new_item_spec.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/stats_spec.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/toggle_all_spec.js: Removed.
* Speedometer/resources/todomvc/dependency-examples/flight/test/test-main.js: Removed.
2017-05-11 Addy Osmani <addyosmani@gmail.com>
Speedometer: Update the AngularJS implementation to a more recent library version
https://bugs.webkit.org/show_bug.cgi?id=171307
Reviewed by Ryosuke Niwa.
Updates the AngularJS implementation of TodoMVC to 1.4.x
* Speedometer/resources/todomvc/architecture-examples/angularjs/bower.json: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/index.html:
* Speedometer/resources/todomvc/architecture-examples/angularjs/js/app.js:
* Speedometer/resources/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js:
* Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js:
* Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js:
* Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js:
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/index.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/readme.md: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.css: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.js: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/readme.md: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/package.json: Added.
* Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md:
* Speedometer/resources/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/test/package.json: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/test/readme.md: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Removed.
* Speedometer/resources/todomvc/architecture-examples/angularjs/todomvc-index.html: Added.
2017-05-09 Jon Davis <jond@apple.com>
[ARES6] Improved the running test indicator
https://bugs.webkit.org/show_bug.cgi?id=171400
Running tests show a triangle before the test title and the titles are white.
Reviewed by Joseph Pecoraro.
* ARES-6/index.html:
* ARES-6/styles.css:
(.test .running):
(.test .running:before):
(.test .indicator): Deleted.
(.test .indicator.running): Deleted.
(@keyframes test-running): Deleted.
2017-05-04 Andy VanWagoner <thetalecrafter@gmail.com>
[INTL] Add PerformanceTests for Intl objects
https://bugs.webkit.org/show_bug.cgi?id=171695
Reviewed by Benjamin Poulain.
* Intl/collator-compare-all-options.html: Added.
* Intl/collator-compare-default.html: Added.
* Intl/collator-create-all-options.html: Added.
* Intl/collator-create-default.html: Added.
* Intl/datetimeformat-create-all-options.html: Added.
* Intl/datetimeformat-create-default.html: Added.
* Intl/datetimeformat-format-all-options.html: Added.
* Intl/datetimeformat-format-default.html: Added.
* Intl/numberformat-create-all-options.html: Added.
* Intl/numberformat-create-default.html: Added.
* Intl/numberformat-format-all-options.html: Added.
* Intl/numberformat-format-default.html: Added.
2017-04-27 Michael Saboff <msaboff@apple.com>
Add back tests inadvertently deleted in r205032.
Rubber stamped by Geoffrey Garen.
* MallocBench/run-malloc-benchmarks:
2017-04-25 Myles C. Maxfield <mmaxfield@apple.com>
Add performance test for FontCache::systemFallbackForCharacters()
https://bugs.webkit.org/show_bug.cgi?id=170842
Reviewed by Tim Horton.
* Layout/word-joiner.html: Added.
2017-04-24 Saam Barati <sbarati@apple.com>
Add ML to ARES6
https://bugs.webkit.org/show_bug.cgi?id=171206
Rubber stamped by Filip Pizlo.
This patch adds a new test to ARES6 called ML. ML is an implementation of
a feedforward neural network: https://github.com/mljs/feedforward-neural-networks.
It makes heavy use of classes, and does non-trivial matrix math using the
ml-matrix library: https://github.com/mljs/matrix
* ARES-6/about.html:
* ARES-6/cli.js:
* ARES-6/glue.js:
* ARES-6/index.html:
* ARES-6/ml: Added.
* ARES-6/ml/benchmark.js: Added.
* ARES-6/ml/index.js: Added.
* ARES-6/ml_benchmark.js: Added.
2017-04-21 Zalan Bujtas <zalan@apple.com>
Simple line layout: Add performance test to measure mid-word line breaking with long text.
https://bugs.webkit.org/show_bug.cgi?id=171136
Reviewed by Ryosuke Niwa.
* Layout/simple-line-layout-word-break-long-text.html: Added.
2017-04-17 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r215366.
This test is failing on performance bots.
Reverted changeset:
"Add performance test for asking the platform for a font for
U+2060 WORD JOINER"
https://bugs.webkit.org/show_bug.cgi?id=170842
http://trac.webkit.org/changeset/215366
2017-04-14 Myles C. Maxfield <mmaxfield@apple.com>
Add performance test for asking the platform for a font for U+2060 WORD JOINER
https://bugs.webkit.org/show_bug.cgi?id=170842
Reviewed by Tim Horton.
* Layout/word-joiner.html: Added.
2017-04-03 Saam Barati <sbarati@apple.com>
Add a new test to ARES6
https://bugs.webkit.org/show_bug.cgi?id=170077
Rubber stamped by Filip Pizlo.
This patch adds a new test to ARES6. The test is called Babylon. Babylon is
the JavaScript parser that is part of the Babel transpiler. The test runs
the parser on 4 different JS scripts.
* ARES-6/Babylon: Added.
* ARES-6/Babylon/AUTHORS: Added.
* ARES-6/Babylon/air-blob.js: Added.
(Reg):
(Reg.fromReg):
(Reg.prototype.get index):
(Reg.prototype.get type):
(Reg.prototype.get name):
(Reg.prototype.get isCalleeSave):
(Reg.prototype.get isReg):
(Reg.prototype.hash):
(Reg.prototype.toString):
(Reg.extract):
(Reg.forEachFast):
(Reg.forEach):
(newGPR):
(Reg.gprs.Reg.fprs.Reg.calleeSaveGPRs.Reg.calleeSaveFPRs.Reg.calleeSaves):
* ARES-6/Babylon/babylon-blob.js: Added.
(export.default.Parser):
(export.default.Parser.prototype.isReservedWord):
(export.default.Parser.prototype.hasPlugin):
(export.default.Parser.prototype.extend):
(export.default.Parser.prototype.loadPlugins):
(export.default.Parser.prototype.parse):
* ARES-6/Babylon/basic-blob.js: Added.
(Basic.NumberApply):
(Basic.Variable):
(Basic.Const):
(Basic.NumberPow):
(Basic.NumberMul):
(Basic.NumberDiv):
(Basic.NumberNeg):
(Basic.NumberAdd):
(Basic.NumberSub):
(Basic.StringVar):
(Basic.Equals):
(Basic.NotEquals):
(Basic.LessThan):
(Basic.GreaterThan):
(Basic.LessEqual):
(Basic.GreaterEqual):
(Basic.GoTo):
(Basic.GoSub):
(Basic.Def):
(Basic.Let):
(Basic.If):
(Basic.Return):
(Basic.Stop):
(Basic.On):
(sideState.shouldStop):
(Basic.For):
(Basic.Next):
(Basic.Print):
(Basic.Input):
(Basic.Read):
(Basic.Restore):
(Basic.Dim):
(Basic.Randomize):
(Basic.End):
(Basic.Program):
* ARES-6/Babylon/benchmark.js: Added.
(this.performance.performance.now.currentTime):
(else.this.preciseTime.currentTime):
(else.currentTime):
(BabylonBenchmark.appendSource):
(BabylonBenchmark):
(BabylonBenchmark.prototype.runIteration.parse):
(BabylonBenchmark.prototype.runIteration.parseExpression):
(BabylonBenchmark.prototype.runIteration):
(runBenchmark):
* ARES-6/Babylon/index.js: Added.
(isIdentifierStart):
(isIdentifierChar):
(isNewLine):
(Position):
(SourceLocation):
(getLineInfo):
(TokenType):
(KeywordTokenType):
(BinopTokenType):
(TokContext):
(tt.parenR.updateContext.tt.braceR.updateContext):
(tt.name.updateContext):
(tt.braceL.updateContext):
(tt.dollarBraceL.updateContext):
(tt.parenL.updateContext):
(tt.incDec.updateContext):
(tt._function.updateContext):
(tt.backQuote.updateContext):
(State.prototype.init):
(State.prototype.curPosition):
(State.prototype.clone):
(State):
(Token):
(codePointToString):
(Tokenizer):
(Tokenizer.prototype.next):
(Tokenizer.prototype.eat):
(Tokenizer.prototype.match):
(Tokenizer.prototype.isKeyword):
(Tokenizer.prototype.lookahead):
(Tokenizer.prototype.setStrict):
(Tokenizer.prototype.curContext):
(Tokenizer.prototype.nextToken):
(Tokenizer.prototype.readToken):
(Tokenizer.prototype.fullCharCodeAtPos):
(Tokenizer.prototype.pushComment):
(Tokenizer.prototype.skipBlockComment):
(Tokenizer.prototype.skipLineComment):
(Tokenizer.prototype.skipSpace):
(Tokenizer.prototype.finishToken):
(Tokenizer.prototype.readToken_dot):
(Tokenizer.prototype.readToken_slash):
(Tokenizer.prototype.readToken_mult_modulo):
(Tokenizer.prototype.readToken_pipe_amp):
(Tokenizer.prototype.readToken_caret):
(Tokenizer.prototype.readToken_plus_min):
(Tokenizer.prototype.readToken_lt_gt):
(Tokenizer.prototype.readToken_eq_excl):
(Tokenizer.prototype.getTokenFromCode):
(Tokenizer.prototype.finishOp):
(Tokenizer.prototype.readRegexp):
(Tokenizer.prototype.readInt):
(Tokenizer.prototype.readRadixNumber):
(Tokenizer.prototype.readNumber):
(Tokenizer.prototype.readCodePoint):
(Tokenizer.prototype.readString):
(Tokenizer.prototype.readTmplToken):
(Tokenizer.prototype.readEscapedChar):
(Tokenizer.prototype.readHexChar):
(Tokenizer.prototype.readWord1):
(Tokenizer.prototype.readWord):
(Tokenizer.prototype.braceIsBlock):
(Tokenizer.prototype.updateContext):
(getOptions):
(prototype.isReservedWord):
(prototype.hasPlugin):
(prototype.extend):
(prototype.loadPlugins):
(prototype.parse):
(last):
(pp.addComment):
(pp.processComment):
(pp.checkPropClash):
(pp.getExpression):
(pp.parseExpression):
(pp.parseMaybeAssign):
(pos.set i):
* ARES-6/Babylon/inspector-blob.js: Added.
(WebInspector.ScriptSyntaxTree):
(WebInspector.ScriptSyntaxTree.prototype.get parsedSuccessfully):
(WebInspector.ScriptSyntaxTree.prototype.forEachNode):
(WebInspector.ScriptSyntaxTree.prototype.filter):
(WebInspector.ScriptSyntaxTree.prototype.containersOfOffset):
(WebInspector.ScriptSyntaxTree.prototype.filterByRange.filterForNodesInRange):
(WebInspector.ScriptSyntaxTree.prototype.filterByRange):
(WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement.removeFunctionsFilter):
(WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
(WebInspector.ScriptSyntaxTree.functionReturnDivot):
(WebInspector.ScriptSyntaxTree.prototype.updateTypes):
(WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers):
(WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
(WebInspector.ScriptSyntaxTree.prototype._defaultParserState):
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._recurseArray):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
* ARES-6/about.html:
* ARES-6/babylon_benchmark.js: Added.
* ARES-6/cli.js:
* ARES-6/glue.js:
* ARES-6/index.html:
* ARES-6/results.js:
(Results.prototype.reportResult):
(Results.prototype.reportResult.averageAbovePercentile): Deleted.
* ARES-6/styles.css:
(.test):
(@media only screen and (max-width: 784px)):
2017-03-29 Zalan Bujtas <zalan@apple.com>
[Arabic text] Add whitespace preserve/word wrap performance test.
https://bugs.webkit.org/show_bug.cgi?id=170243
Reviewed by Simon Fraser.
* Layout/ArabicLineLayout-pre-and-wrap.html: Added.
2017-03-08 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC] Add helpers to run Six Speed to run-jsc-benchmarks
https://bugs.webkit.org/show_bug.cgi?id=169351
Reviewed by Saam Barati.
* SixSpeed/wrappers/wrapper.js: Added.
(assertEqual):
(test):
(jscRun):
2017-03-08 Jon Davis <jond@apple.com>
Fixed ARES-6 animations for other browsers
Rubber stamped by Saam Barati.
* ARES-6/styles.css:
(.swoop):
(.logo):
2017-03-07 Filip Pizlo <fpizlo@apple.com>
Revise the ARES-6 explainer text
https://bugs.webkit.org/show_bug.cgi?id=169287
Reviewed by Saam Barati.
Just did some copy-editing.
* ARES-6/about.html:
2017-03-06 Jon Davis <jond@apple.com>
Refined the ARES-6 experience
https://bugs.webkit.org/show_bug.cgi?id=169205
Reviewed by Saam Barati.
* ARES-6/about.html: Copied from PerformanceTests/ARES-6/index.html.
* ARES-6/driver.js:
(Driver.prototype.start):
(Driver.prototype._updateIterations):
(Driver):
* ARES-6/index.html:
* ARES-6/stats.js:
(Stats.prototype.toString.span.span):
* ARES-6/styles.css:
(body):
(.swoop):
(p):
(.logo):
(.start):
(.test):
(.test:nth-child(odd)):
(.overall):
(.about h2):
(.button):
(.button:hover):
(.button.return:before):
(@keyframes fade-in):
(@keyframes scale-in):
(@keyframes flicker-in):
(@keyframes wipe-in):
(.flip): Deleted.
(.testing, .about): Deleted.
(.testing): Deleted.
(.about): Deleted.
(#about:target): Deleted.
2017-03-06 Jeremy Jones <jeremyj@apple.com>
StandardCanPlayThrough.html does not work on iOS.
https://bugs.webkit.org/show_bug.cgi?id=169207
Reviewed by Jer Noble.
On iOS only, add muted=true and autoplay=allowed. The loading policy on iOS requires these attributes to load enough
data to trigger canPlayThrough.
* Media/StandardCanPlayThrough.html:
2017-02-13 Zalan Bujtas <zalan@apple.com>
Simple line layout: Add performance test with text-rendering: optimizeSpeed
https://bugs.webkit.org/show_bug.cgi?id=168248
Reviewed by Simon Fraser.
* Layout/simple-line-layout-with-varying-content-and-optimized-speed.html: Added.
2017-02-10 Zalan Bujtas <zalan@apple.com>
Mail hangs when removing multiple rows from large table.
https://bugs.webkit.org/show_bug.cgi?id=168103
<rdar://problem/30090186>
Reviewed by Ryosuke Niwa.
* DOM/large-table-edit.html: Added.
2017-02-05 Filip Pizlo <fpizlo@apple.com>
Beef up the ARES-6 explainer text
https://bugs.webkit.org/show_bug.cgi?id=167867
Reviewed by Saam Barati.
Added appropriate links.
Added text that explains the subscores.
* ARES-6/index.html:
2017-02-06 Jer Noble <jer.noble@apple.com>
Playback stalls when a SourceBuffer append causes frame eviction
https://bugs.webkit.org/show_bug.cgi?id=167834
Reviewed by Eric Carlson.
Add an in-page performance test measuring the amount of time required
to append a large amount of media data to a SourceBuffer, and then to
completely remove that data 30s at a time.
Add a microbenchmark for MediaTime which measures the amount of time
required to create a 1M entry std::map and traverse the map 1M times.
* Media/MSERemoveCodedFrames.html: Added.
* Media/media-source-loader.js:
(MediaSourceLoader.prototype.get duration):
* MediaTime/Configurations/Base.xcconfig: Added.
* MediaTime/Configurations/DebugRelease.xcconfig: Added.
* MediaTime/Makefile: Added.
* MediaTime/MediaTime.xcodeproj/project.pbxproj: Added.
* MediaTime/main.cpp: Added.
(performTest):
(test):
(main):
* Skipped:
2017-02-06 Saam Barati <sbarati@apple.com>
Make ARES-6 work from the CLI again
https://bugs.webkit.org/show_bug.cgi?id=167895
Reviewed by Michael Saboff.
* ARES-6/driver.js:
(Driver.prototype.readyTrigger):
(Driver.prototype.disableTrigger):
* ARES-6/stats.js:
(Stats.prototype.toString.span.span):
(Stats.prototype.toString.return.span):
(Stats.prototype.toString):
2017-02-06 Ryan Haddad <ryanhaddad@apple.com>
Skip ARES-6 on performance bots
https://bugs.webkit.org/show_bug.cgi?id=167863
Unreviewed test gardening.
ES6SampleBench was renamed to ARES-6, so this should be updated in PerformanceTests/Skipped as well.
* Skipped:
2017-02-05 Filip Pizlo <fpizlo@apple.com>
Change ES6SampleBench into ARES-6
https://bugs.webkit.org/show_bug.cgi?id=167863
Rubber stamped by Saam Barati.
This imports changes that Jonathan Davis (jond@apple.com) made to ES6SampleBench to make it look
super awesome. Its now called ARES-6.
* ARES-6: Copied from PerformanceTests/ES6SampleBench.
* ARES-6/ARES-6.svg: Added.
* ARES-6/driver.js:
(Driver):
(Driver.prototype.readyTrigger):
(Driver.prototype.disableTrigger):
(Driver.prototype.start):
(Driver.prototype._updateIterations):
* ARES-6/glue.js:
* ARES-6/index.html:
* ARES-6/results.js:
(Results.prototype.reportRunning):
(Results.prototype.reportDone):
* ARES-6/stats.js:
(Stats.prototype.toString.return.span):
(Stats.prototype.toString.span.span):
(Stats.prototype.toString): Deleted.
* ARES-6/style.css: Removed.
* ARES-6/styles.css: Added.
(html):
(body):
(header,):
(p a):
(p a:hover):
(.flip):
(header):
(h2,):
(p):
(.about h2):
(.logo):
(.start):
(.start.ready):
(.start.ready:hover):
(.start:after):
(.start.ready .testrun):
(.tests):
(.test):
(.overall h2,):
(.test .indicator):
(.test .indicator.running):
(@keyframes test-running):
(100%):
(.score):
(.score label):
(.score .value):
(.score .units):
(.score .margin):
(.overall):
(.overall .score):
(.overall .margin):
(.testing, .about):
(.testing):
(.about):
(#about:target):
(@media only screen and (max-width: 784px)):
* ARES-6/swoop.svg: Added.
* ES6SampleBench: Removed.
* ES6SampleBench/Air: Removed.
* ES6SampleBench/Air/README.md: Removed.
* ES6SampleBench/Air/airjs-tests.yaml: Removed.
* ES6SampleBench/Air/all.js: Removed.
* ES6SampleBench/Air/allocate_stack.js: Removed.
* ES6SampleBench/Air/arg.js: Removed.
* ES6SampleBench/Air/basic_block.js: Removed.
* ES6SampleBench/Air/benchmark.js: Removed.
* ES6SampleBench/Air/code.js: Removed.
* ES6SampleBench/Air/custom.js: Removed.
* ES6SampleBench/Air/frequented_block.js: Removed.
* ES6SampleBench/Air/insertion_set.js: Removed.
* ES6SampleBench/Air/inst.js: Removed.
* ES6SampleBench/Air/liveness.js: Removed.
* ES6SampleBench/Air/make_dist.sh: Removed.
* ES6SampleBench/Air/opcode.js: Removed.
* ES6SampleBench/Air/payload-airjs-ACLj8C.js: Removed.
* ES6SampleBench/Air/payload-gbemu-executeIteration.js: Removed.
* ES6SampleBench/Air/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
* ES6SampleBench/Air/payload-typescript-scanIdentifier.js: Removed.
* ES6SampleBench/Air/reg.js: Removed.
* ES6SampleBench/Air/stack_slot.js: Removed.
* ES6SampleBench/Air/stress-test.js: Removed.
* ES6SampleBench/Air/strip-hash.rb: Removed.
* ES6SampleBench/Air/symbols.js: Removed.
* ES6SampleBench/Air/test.html: Removed.
* ES6SampleBench/Air/test.js: Removed.
* ES6SampleBench/Air/tmp.js: Removed.
* ES6SampleBench/Air/tmp_base.js: Removed.
* ES6SampleBench/Air/util.js: Removed.
* ES6SampleBench/Basic: Removed.
* ES6SampleBench/Basic/ast.js: Removed.
* ES6SampleBench/Basic/basic-tests.yaml: Removed.
* ES6SampleBench/Basic/basic.js: Removed.
* ES6SampleBench/Basic/benchmark.js: Removed.
* ES6SampleBench/Basic/caseless_map.js: Removed.
* ES6SampleBench/Basic/lexer.js: Removed.
* ES6SampleBench/Basic/number.js: Removed.
* ES6SampleBench/Basic/parser.js: Removed.
* ES6SampleBench/Basic/random.js: Removed.
* ES6SampleBench/Basic/state.js: Removed.
* ES6SampleBench/Basic/stress-test.js: Removed.
* ES6SampleBench/Basic/test.html: Removed.
* ES6SampleBench/Basic/test.js: Removed.
* ES6SampleBench/Basic/util.js: Removed.
* ES6SampleBench/air_benchmark.js: Removed.
* ES6SampleBench/basic_benchmark.js: Removed.
* ES6SampleBench/cli.js: Removed.
* ES6SampleBench/driver.js: Removed.
* ES6SampleBench/glue.js: Removed.
* ES6SampleBench/index.html: Removed.
* ES6SampleBench/results.js: Removed.
* ES6SampleBench/stats.js: Removed.
* ES6SampleBench/style.css: Removed.
2017-02-05 Zalan Bujtas <zalan@apple.com>
Simple line layout: Add performance test with varying string and font-size to minimize width-cache hit.
https://bugs.webkit.org/show_bug.cgi?id=167859
<rdar://problem/30368070>
Reviewed by Antti Koivisto.
This is in preparation for webkit.org/b/167843.
* Layout/simple-line-layout-with-varying-content.html: Added.
2017-01-16 Filip Pizlo <fpizlo@apple.com>
Add framerate baselines to the splay-detail test
https://bugs.webkit.org/show_bug.cgi?id=167659
Reviewed by Geoffrey Garen.
* JetStream/Octane2/splay-detail.html:
2017-01-31 Carlos Alberto Lopez Perez <clopez@igalia.com>
[EFL][GTK] Skip some IndexedDB tests that time out on the Perf bots.
Unreviewed performance test gardening.
* Skipped:
2017-01-30 Zalan Bujtas <zalan@apple.com>
Simple line layout: Small tweaks to improve performance.
https://bugs.webkit.org/show_bug.cgi?id=167611
<rdar://problem/30274294>
Reviewed by Simon Fraser.
* Layout/simple-line-layout-non-repeating-text.html: Added.
2017-01-13 Said Abou-Hallawa <sabouhallawa@apple.com>
26 MotionMark performance tests failing
https://bugs.webkit.org/show_bug.cgi?id=166854
Reviewed by Ryosuke Niwa.
Skip running MotionMark on WebKit perf bots.
* Skipped:
2017-01-06 Said Abou-Hallawa <sabouhallawa@apple.com>
Rename the directory and the files of MotionMark from Animometer to MotionMark
https://bugs.webkit.org/show_bug.cgi?id=166659
Reviewed by Jon Lee.
Rename the directory and the files of the benchmark to its new name.
* MotionMark/developer.html: Renamed from PerformanceTests/Animometer/developer.html.
* MotionMark/index.html: Renamed from PerformanceTests/Animometer/index.html.
* MotionMark/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/d3.min.js.
* MotionMark/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/graph.js.
* MotionMark/resources/debug-runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.css.
* MotionMark/resources/debug-runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.js.
* MotionMark/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/tests.js.
* MotionMark/resources/extensions.js: Renamed from PerformanceTests/Animometer/resources/extensions.js.
* MotionMark/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/runner/benchmark-runner.js.
* MotionMark/resources/runner/crystal.svg: Renamed from PerformanceTests/Animometer/resources/runner/crystal.svg.
* MotionMark/resources/runner/lines.svg: Renamed from PerformanceTests/Animometer/resources/runner/lines.svg.
* MotionMark/resources/runner/logo.svg: Renamed from PerformanceTests/Animometer/resources/runner/logo.svg.
* MotionMark/resources/runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/runner/animometer.css.
* MotionMark/resources/runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/runner/animometer.js.
* MotionMark/resources/runner/tests.js: Renamed from PerformanceTests/Animometer/resources/runner/tests.js.
* MotionMark/resources/statistics.js: Renamed from PerformanceTests/Animometer/resources/statistics.js.
* MotionMark/resources/strings.js: Renamed from PerformanceTests/Animometer/resources/strings.js.
* MotionMark/tests/3d/resources/webgl.js: Renamed from PerformanceTests/Animometer/tests/3d/resources/webgl.js.
* MotionMark/tests/3d/webgl.html: Renamed from PerformanceTests/Animometer/tests/3d/webgl.html.
* MotionMark/tests/bouncing-particles/bouncing-canvas-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-images.html.
* MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html.
* MotionMark/tests/bouncing-particles/bouncing-css-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-images.html.
* MotionMark/tests/bouncing-particles/bouncing-css-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-shapes.html.
* MotionMark/tests/bouncing-particles/bouncing-svg-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-images.html.
* MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-shapes.html.
* MotionMark/tests/bouncing-particles/bouncing-tagged-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-tagged-images.html.
* MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-images.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js.
* MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js.
* MotionMark/tests/bouncing-particles/resources/image1.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image1.jpg.
* MotionMark/tests/bouncing-particles/resources/image2.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image2.jpg.
* MotionMark/tests/bouncing-particles/resources/image3.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image3.jpg.
* MotionMark/tests/bouncing-particles/resources/image4.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image4.jpg.
* MotionMark/tests/bouncing-particles/resources/image5.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image5.jpg.
* MotionMark/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/dom/compositing-transforms.html.
* MotionMark/tests/dom/focus.html: Renamed from PerformanceTests/Animometer/tests/dom/focus.html.
* MotionMark/tests/dom/leaves.html: Renamed from PerformanceTests/Animometer/tests/dom/leaves.html.
* MotionMark/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/dom/particles.html.
* MotionMark/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/compositing-transforms.js.
* MotionMark/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/dom-particles.js.
* MotionMark/tests/dom/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/focus.js.
* MotionMark/tests/dom/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/leaves.js.
* MotionMark/tests/master/canvas-stage.html: Renamed from PerformanceTests/Animometer/tests/master/canvas-stage.html.
* MotionMark/tests/master/focus.html: Renamed from PerformanceTests/Animometer/tests/master/focus.html.
* MotionMark/tests/master/image-data.html: Renamed from PerformanceTests/Animometer/tests/master/image-data.html.
* MotionMark/tests/master/leaves.html: Renamed from PerformanceTests/Animometer/tests/master/leaves.html.
* MotionMark/tests/master/multiply.html: Renamed from PerformanceTests/Animometer/tests/master/multiply.html.
* MotionMark/tests/master/resources/canvas-stage.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-stage.js.
* MotionMark/tests/master/resources/canvas-tests.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-tests.js.
* MotionMark/tests/master/resources/compass.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/compass.svg.
* MotionMark/tests/master/resources/compass100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/compass100.png.
* MotionMark/tests/master/resources/console.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/console.svg.
* MotionMark/tests/master/resources/console100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/console100.png.
* MotionMark/tests/master/resources/contribute.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute.svg.
* MotionMark/tests/master/resources/contribute100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute100.png.
* MotionMark/tests/master/resources/debugger.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger.svg.
* MotionMark/tests/master/resources/debugger100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger100.png.
* MotionMark/tests/master/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/master/resources/focus.js.
* MotionMark/tests/master/resources/image-data.js: Renamed from PerformanceTests/Animometer/tests/master/resources/image-data.js.
* MotionMark/tests/master/resources/inspector.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector.svg.
* MotionMark/tests/master/resources/inspector100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector100.png.
* MotionMark/tests/master/resources/layout.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/layout.svg.
* MotionMark/tests/master/resources/layout100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/layout100.png.
* MotionMark/tests/master/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/master/resources/leaves.js.
* MotionMark/tests/master/resources/multiply.js: Renamed from PerformanceTests/Animometer/tests/master/resources/multiply.js.
* MotionMark/tests/master/resources/particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/particles.js.
* MotionMark/tests/master/resources/performance.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/performance.svg.
* MotionMark/tests/master/resources/performance100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/performance100.png.
* MotionMark/tests/master/resources/script.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/script.svg.
* MotionMark/tests/master/resources/script100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/script100.png.
* MotionMark/tests/master/resources/shortcuts.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts.svg.
* MotionMark/tests/master/resources/shortcuts100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts100.png.
* MotionMark/tests/master/resources/standards.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/standards.svg.
* MotionMark/tests/master/resources/standards100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/standards100.png.
* MotionMark/tests/master/resources/storage.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/storage.svg.
* MotionMark/tests/master/resources/storage100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/storage100.png.
* MotionMark/tests/master/resources/styles.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/styles.svg.
* MotionMark/tests/master/resources/styles100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/styles100.png.
* MotionMark/tests/master/resources/svg-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/svg-particles.js.
* MotionMark/tests/master/resources/text.js: Renamed from PerformanceTests/Animometer/tests/master/resources/text.js.
* MotionMark/tests/master/resources/timeline.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline.svg.
* MotionMark/tests/master/resources/timeline100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline100.png.
* MotionMark/tests/master/svg-particles.html: Renamed from PerformanceTests/Animometer/tests/master/svg-particles.html.
* MotionMark/tests/master/text.html: Renamed from PerformanceTests/Animometer/tests/master/text.html.
* MotionMark/tests/resources/main.js: Renamed from PerformanceTests/Animometer/tests/resources/main.js.
* MotionMark/tests/resources/math.js: Renamed from PerformanceTests/Animometer/tests/resources/math.js.
* MotionMark/tests/resources/stage.css: Renamed from PerformanceTests/Animometer/tests/resources/stage.css.
* MotionMark/tests/resources/star.svg: Renamed from PerformanceTests/Animometer/tests/resources/star.svg.
* MotionMark/tests/resources/yin-yang.png: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.png.
* MotionMark/tests/resources/yin-yang.svg: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.svg.
* MotionMark/tests/simple/resources/simple-canvas-paths.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js.
* MotionMark/tests/simple/resources/simple-canvas.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas.js.
* MotionMark/tests/simple/resources/tiled-canvas-image.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/tiled-canvas-image.js.
* MotionMark/tests/simple/simple-canvas-paths.html: Renamed from PerformanceTests/Animometer/tests/simple/simple-canvas-paths.html.
* MotionMark/tests/simple/tiled-canvas-image.html: Renamed from PerformanceTests/Animometer/tests/simple/tiled-canvas-image.html.
* MotionMark/tests/template/resources/template-canvas.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-canvas.js.
* MotionMark/tests/template/resources/template-css.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-css.js.
* MotionMark/tests/template/resources/template-svg.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-svg.js.
* MotionMark/tests/template/template-canvas.html: Renamed from PerformanceTests/Animometer/tests/template/template-canvas.html.
* MotionMark/tests/template/template-css.html: Renamed from PerformanceTests/Animometer/tests/template/template-css.html.
* MotionMark/tests/template/template-svg.html: Renamed from PerformanceTests/Animometer/tests/template/template-svg.html.
2016-12-13 Brady Eidson <beidson@apple.com>
Add a PerfTest targeting IDBObjectStore.get().
https://bugs.webkit.org/show_bug.cgi?id=165816
Reviewed by Alex Christensen.
* IndexedDB/objectstore-get.html: Added.
2016-12-13 Brady Eidson <beidson@apple.com>
Add a PerfTest targeting IDBIndex.get().
https://bugs.webkit.org/show_bug.cgi?id=165803
Reviewed by Alex Christensen.
* IndexedDB/index-get.html: Added.
2016-12-12 Brady Eidson <beidson@apple.com>
More IndexedDB perf tests.
https://bugs.webkit.org/show_bug.cgi?id=165634
Reviewed by Sam Weinig.
* IndexedDB/index-multientry.html:
* IndexedDB/large-number-of-inserts-responsiveness.html: Added.
* IndexedDB/large-number-of-inserts.html: Added.
* IndexedDB/objectstore-cursor.html: Added. Runtime cut in 1/4th compared to r209672.
* resources/runner.js:
2016-12-12 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r209672.
https://bugs.webkit.org/show_bug.cgi?id=165766
IndexedDB/objectstore-cursor.html perf test always times out
(Requested by ap on #webkit).
Reverted changeset:
"More IndexedDB perf tests."
https://bugs.webkit.org/show_bug.cgi?id=165634
http://trac.webkit.org/changeset/209672
2016-12-10 Brady Eidson <beidson@apple.com>
More IndexedDB perf tests.
https://bugs.webkit.org/show_bug.cgi?id=165634
Reviewed by Sam Weinig.
* IndexedDB/index-multientry.html:
* IndexedDB/large-number-of-inserts-responsiveness.html: Added.
* IndexedDB/large-number-of-inserts.html: Added.
* IndexedDB/objectstore-cursor.html: Added.
* resources/runner.js: Add "track responsiveness" functionality to PerfTestRunner.
2016-12-06 Filip Pizlo <fpizlo@apple.com>
Concurrent GC should be stable enough to land enabled
https://bugs.webkit.org/show_bug.cgi?id=164990
Reviewed by Geoffrey Garen.
Made CDjs more configurable and refined the "large.js" configuration. I was using that one and
the new "long.js" configuration to tune concurrent eden GCs.
Added a new way of running Splay in browser, which using chartjs to plot the execution times of
2000 iterations. This includes the minified chartjs.
* JetStream/Octane2/splay-detail.html: Added.
* JetStream/cdjs/benchmark.js:
(benchmarkImpl):
(benchmark):
* JetStream/cdjs/long.js: Added.
2016-12-07 Brady Eidson <beidson@apple.com>
Add IDB perf tests stressing key size.
https://bugs.webkit.org/show_bug.cgi?id=165567
Reviewed by Alex Christensen.
* IndexedDB/large-array-keys.html: Added.
* IndexedDB/large-binary-keys.html: Added.
* IndexedDB/large-string-keys.html: Added.
2016-12-05 Brady Eidson <beidson@apple.com>
Add an IndexedDB perf test to PerformanceTests.
https://bugs.webkit.org/show_bug.cgi?id=165430
Reviewed by Alex Christensen.
* IndexedDB/index-multientry.html: Added.
2016-12-02 Filip Pizlo <fpizlo@apple.com>
ES6SampleBench should report an average for Steady State so that all of the numbers are comparable
https://bugs.webkit.org/show_bug.cgi?id=165325
Reviewed by Saam Barati.
This makes all of the numbers that ES6SampleBench reports comparable to each other: they all speak of the time
it took to run an iteration of something.
* ES6SampleBench/results.js:
(Results.prototype.reportResult):
2016-11-18 Jer Noble <jer.noble@apple.com>
Add some performance tests for various aspects of media loading and playback.
https://bugs.webkit.org/show_bug.cgi?id=164977
Reviewed by Darin Adler.
Add new tests for a few aspects of media playback; namely: how quickly media elements fire
the "canplaythrough" event when all data is immediately available, how quickly HLS playback
switches resolutions, and at what playback rate MSE-backed video can play without dropping
frames. Skip these tests by default, as they're not runnable on all ports, and they require
a webserver (run-webkit-httpd) to complete on macOS.
* Media/HLSCanPlayThrough.html: Added.
* Media/HLSGearChange.html: Added.
* Media/MSECanPlayThrough.html: Added.
* Media/MSEPlaybackRate.html: Added.
* Media/StandardCanPlayThrough.html: Added.
* Media/hls/1080p/iframe_index.m3u8: Added.
* Media/hls/1080p/prog_index.m3u8: Added.
* Media/hls/1080p/test.ts: Added.
* Media/hls/480p/iframe_index.m3u8: Added.
* Media/hls/480p/prog_index.m3u8: Added.
* Media/hls/480p/test.ts: Added.
* Media/hls/720p/iframe_index.m3u8: Added.
* Media/hls/720p/prog_index.m3u8: Added.
* Media/hls/720p/test.ts: Added.
* Media/hls/720p/test.ts.back: Added.
* Media/hls/index.m3u8: Added.
* Media/media-source-loader.js: Added.
(MediaSourceLoader):
(MediaSourceLoader.prototype.loadManifest):
(MediaSourceLoader.prototype.loadManifestSucceeded):
(MediaSourceLoader.prototype.loadManifestFailed):
(MediaSourceLoader.prototype.loadMediaData):
(MediaSourceLoader.prototype.loadMediaDataSucceeded):
(MediaSourceLoader.prototype.loadMediaDataFailed):
(MediaSourceLoader.prototype.get type):
(MediaSourceLoader.prototype.get duration):
(MediaSourceLoader.prototype.get initSegment):
(MediaSourceLoader.prototype.get mediaSegmentsLength):
(MediaSourceLoader.prototype.mediaSegments):
(MediaSourceLoader.prototype.get everyMediaSegment):
* Media/test-fragmented-video.json: Added.
* Media/test-fragmented-video.mp4: Added.
* Media/test.mp4: Added.
* Skipped:
2016-11-18 Filip Pizlo <fpizlo@apple.com>
Concurrent GC should be able to run splay in debug mode and earley/raytrace in release mode with no perf regression
https://bugs.webkit.org/show_bug.cgi?id=164282
Reviewed by Geoffrey Garen and Oliver Hunt.
CDjs is a fun benchmark for stressing concurrent GCs, but to really give the GC a good
workout you need to increase the amount of work that the test does. This adds a second
configuration of the benchmark that has more aircraft. It uses much more memory and causes us
to do more GCs and those GCs take longer.
* JetStream/cdjs/benchmark.js:
(benchmarkImpl):
(benchmark):
* JetStream/cdjs/large.js: Added.
2016-11-14 Filip Pizlo <fpizlo@apple.com>
Unreviewed, revert unintended change.
* ES6SampleBench/Air/benchmark.js:
2016-10-03 Saam Barati <sbarati@apple.com>
MapHash should speculate on the type of its child node
https://bugs.webkit.org/show_bug.cgi?id=161922
Reviewed by Filip Pizlo.
I gave the main generator a name so it's easier to see what
it is when using the sampling profiler.
* ES6SampleBench/Basic/ast.js:
(Basic.Program):
2016-09-19 Sergio Villar Senin <svillar@igalia.com>
[css-grid] Remove the x2 computation of row sizes with indefinite heights
https://bugs.webkit.org/show_bug.cgi?id=162150
Reviewed by Darin Adler.
Added a new test case which checks the layout performance of grids inside other grids, i.e,
grids acting both as grid container and grid item.
* Layout/nested-grid.html: Added.
2016-09-09 Simon Fraser <simon.fraser@apple.com>
Perf test Animation/css-accelerated-animation.html failing
https://bugs.webkit.org/show_bug.cgi?id=161795
Skip Animation/css-accelerated-animation.html since this only works as a MobileSafari
perf test.
* Skipped:
2016-09-08 Simon Fraser <simon.fraser@apple.com>
Add a content-animation test with accelerated CSS animations
https://bugs.webkit.org/show_bug.cgi?id=161776
Reviewed by Dean Jackson.
Add a test that measures the frame rate of accelerated CSS animations.
This is like css-animation.html (which animates 'left' and 'top') but animates
transforms instead. In order to get animation in X and Y we make two nested elements
and set transformX() on one, and transformY() on the other.
* Animation/css-accelerated-animation.html: Added.
2016-08-23 Saam Barati <sbarati@apple.com>
It should be easy to run ES6SampleBench from the jsc shell
https://bugs.webkit.org/show_bug.cgi?id=161085
Reviewed by Yusuke Suzuki.
This patch makes ES6 sample bench runnable through the `jsc` shell.
To do that, you need to be in the PerformanceTests/ES6SampleBench
directory and run `jsc cli.js`. To make this work, the benchmark
is now aware of being run in two modes: via the browser, and via
the shell. Each entry point will set a variable `isInBrowser`,
and the benchmark will do different things based on if that
variable is true or false.
* ES6SampleBench/Air/benchmark.js:
* ES6SampleBench/Air/stress-test.js:
* ES6SampleBench/Basic/benchmark.js:
(runBenchmark):
* ES6SampleBench/Basic/stress-test.js:
* ES6SampleBench/air_benchmark.js:
* ES6SampleBench/basic_benchmark.js:
* ES6SampleBench/cli.js: Added.
(return.doRun):
(makeBenchmarkRunner):
* ES6SampleBench/driver.js:
(Driver):
(Driver.prototype._recomputeSummary):
(Driver.prototype._iterate.window.setTimeout):
(Driver.prototype._iterate):
(Driver.prototype._updateIterations):
* ES6SampleBench/glue.js:
(reportResult):
* ES6SampleBench/index.html:
* ES6SampleBench/results.js:
(Results):
(Results.prototype.reportRunning):
(Results.prototype.reportDone):
(Results.prototype.reportError):
* ES6SampleBench/stats.js:
(Stats):
(Stats.prototype.toString):
(Stats.prototype._update):
2016-08-01 Said Abou-Hallawa <sabouhallawa@apple.com>
Add an option to run the MotionMark tests with classic tile size (512x512)
https://bugs.webkit.org/show_bug.cgi?id=160371
Reviewed by Darin Adler.
Setting the body to large size (3000x3000) and overflow to scroll forces
the classic tile size (512x512). This option does not affect the canvas
tests because the canvas is displayed on one tile regardless of its size.
* Animometer/developer.html:
* Animometer/resources/debug-runner/animometer.css:
(body.showing-test-container.tiles-big):
(body.showing-test-container.tiles-classic):
* Animometer/resources/debug-runner/animometer.js:
* Animometer/resources/runner/animometer.js:
(window.benchmarkController.startBenchmark):
2016-06-29 Filip Pizlo <fpizlo@apple.com>
Generators violate bytecode liveness validation
https://bugs.webkit.org/show_bug.cgi?id=159279
Reviewed by Yusuke Suzuki.
Add Basic to our test harness.
Also made some cosmetic changes to the benchmark harness.
* ES6SampleBench/Basic/basic-tests.yaml: Added.
* ES6SampleBench/Basic/stress-test.js: Added.
(preciseTime):
* ES6SampleBench/driver.js:
(Driver):
(Driver.prototype.start):
(Driver.prototype.reportError):
* ES6SampleBench/glue.js:
* ES6SampleBench/index.html:
2016-06-28 Filip Pizlo <fpizlo@apple.com>
ES6SampleBench should have a harness
https://bugs.webkit.org/show_bug.cgi?id=159246
Reviewed by Saam Barati.
This adds a simple web harness for ES6SampleBench. It runs Air and Basic 10 times for 200
iterations each and reports three metrics:
First iteration: the time it takes for the first iteration to run. This is the first
iteration after the benchmark is loaded into the iframe, so it's representative of what
would happen if one of these workloads only ran for a short time.
Worst 2%: of the last 199 iterations, the average of the worst 2% iterations. If code like
any of these workloads was used in an important event handler, you'd want that code to run
well in the worst case in addition to having great throughput.
Steady state: the total of the last 199 iterations. This is representative of what would
happen if you ran code like this for a long time.
The total score is the geomean of the firstIteration/worstCase/steadyState numbers of the
two benchmarks.
The harness does statistics using Student's T-distribution confidence intervals.
* ES6SampleBench/Basic/benchmark.js:
(Benchmark):
* ES6SampleBench/air_benchmark.js: Added.
* ES6SampleBench/basic_benchmark.js: Added.
* ES6SampleBench/driver.js: Added.
(Driver):
(Driver.prototype.addBenchmark):
(Driver.prototype.start):
(Driver.prototype.reportResult):
(Driver.prototype.reportError):
(Driver.prototype._recomputeSummary.Geomean):
(Driver.prototype._recomputeSummary.Geomean.prototype.add):
(Driver.prototype._recomputeSummary.Geomean.prototype.get result):
(Driver.prototype._recomputeSummary):
(Driver.prototype._iterate):
(Driver.prototype._updateIterations):
* ES6SampleBench/glue.js: Added.
* ES6SampleBench/index.html: Added.
* ES6SampleBench/results.js: Added.
(Results):
(Results.prototype.get benchmark):
(Results.prototype.reset):
(Results.prototype.reportRunning):
(Results.prototype.reportDone):
(Results.prototype.reportResult.averageAbovePercentile):
(Results.prototype.reportResult):
(Results.prototype.reportError):
* ES6SampleBench/stats.js: Added.
(Stats):
(Stats.prototype.reset):
(Stats.prototype.add):
(Stats.prototype.get numIterations):
(Stats.prototype.valueForIteration):
(Stats.get result.tDist):
(Stats.prototype.get result):
(Stats.prototype.toString):
(Stats.prototype._update):
* ES6SampleBench/style.css: Added.
(body):
(body, th, tr):
(h1, h2, h3, h4):
(h1):
(h2):
(h3):
(hr):
(address):
(img):
(.underline):
(ol.loweralpha):
(ol.upperalpha):
(ol.lowerroman):
(ol.upperroman):
(ol.arabic):
(.banner-link:link, .banner-link:visited):
(:link, :visited):
(h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited):
(.anchor:link, .anchor:visited):
(* > .anchor:link, * > .anchor:visited):
(span:hover .anchor):
(a.forbidden, span.forbidden):
(a.missing:hover):
(a.closed:link, a.closed:visited, span.closed):
(pre):
(div.code):
(div.code pre):
(dt):
(dd):
(dd:last-child):
(.site-logo):
(.site-logo .tagline):
(table):
(#contents):
(p):
(p:last-child):
(th):
(td):
2016-06-28 Jon Lee <jonlee@apple.com>
Update focus test
https://bugs.webkit.org/show_bug.cgi?id=159242
rdar://problem/27070007
Reviewed by Dean Jackson.
Provisionally reviewed by Said Abou-Hallawa.
Move previous test to dom suite, and update the test for better reporting of frame rate, although
it uses a different rendering path.
* Animometer/resources/debug-runner/tests.js: Add to dom suite.
* Animometer/tests/dom/focus.html: Copied from PerformanceTests/Animometer/tests/master/focus.html.
* Animometer/tests/dom/resources/focus.js: Copied from PerformanceTests/Animometer/tests/master/resources/focus.js.
* Animometer/tests/master/focus.html: Remove center element.
* Animometer/tests/master/resources/focus.js: Use narrower size range with smaller particles. Remove the
container elements. Inline getBlurValue and getOpacityValue since they are only called once.
2016-06-28 Filip Pizlo <fpizlo@apple.com>
Move Air.js and Basic into ES6SampleBench
Rubber stamped by Geoffrey Garen.
We want to group our ES6 benchmarks together, and eventually, we want to give them a
common harness.
* Air.js: Removed.
* Air.js/README.md: Removed.
* Air.js/airjs-tests.yaml: Removed.
* Air.js/all.js: Removed.
* Air.js/allocate_stack.js: Removed.
* Air.js/arg.js: Removed.
* Air.js/basic_block.js: Removed.
* Air.js/benchmark.js: Removed.
* Air.js/code.js: Removed.
* Air.js/custom.js: Removed.
* Air.js/frequented_block.js: Removed.
* Air.js/insertion_set.js: Removed.
* Air.js/inst.js: Removed.
* Air.js/liveness.js: Removed.
* Air.js/make_dist.sh: Removed.
* Air.js/opcode.js: Removed.
* Air.js/payload-airjs-ACLj8C.js: Removed.
* Air.js/payload-gbemu-executeIteration.js: Removed.
* Air.js/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
* Air.js/payload-typescript-scanIdentifier.js: Removed.
* Air.js/reg.js: Removed.
* Air.js/stack_slot.js: Removed.
* Air.js/stress-test.js: Removed.
* Air.js/strip-hash.rb: Removed.
* Air.js/symbols.js: Removed.
* Air.js/test.html: Removed.
* Air.js/test.js: Removed.
* Air.js/tmp.js: Removed.
* Air.js/tmp_base.js: Removed.
* Air.js/util.js: Removed.
* Basic: Removed.
* Basic/ast.js: Removed.
* Basic/basic.js: Removed.
* Basic/benchmark.js: Removed.
* Basic/caseless_map.js: Removed.
* Basic/lexer.js: Removed.
* Basic/number.js: Removed.
* Basic/parser.js: Removed.
* Basic/random.js: Removed.
* Basic/state.js: Removed.
* Basic/test.html: Removed.
* Basic/test.js: Removed.
* Basic/util.js: Removed.
* ES6SampleBench: Added.
* ES6SampleBench/Air: Copied from PerformanceTests/Air.js.
* ES6SampleBench/Basic: Copied from PerformanceTests/Basic.
* Skipped:
2016-06-24 Filip Pizlo <fpizlo@apple.com>
Add a ES6 generator benchmark
https://bugs.webkit.org/show_bug.cgi?id=159101
Rubber stamped by Keith Miller.
This adds a Basic interpreter loosely based on ECMA-55:
http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-55,%201st%20Edition,%20January%201978.pdf
It includes a lexer that is a generator, a parser that uses regular expressions, and an AST
walk interpreter where the walking functions for statements are generators that call each
other with yield*. This enables the interpreter to look like an AST walk even though it can
yield at INPUT and PRINT statements.
This also uses for-of, classes, Map, and WeakMap. It also uses deprecated-but-awesome RegExp
features like RegExp.lastMatch and RegExp.rightContext. I did it that way because this is
how I've always written lexers in dynamic languages; see offlineasm's lex() method in
parser.rb for example.
The benchmark runs a handful of simple Basic programs. The longest-running one computes
prime numbers.
Includes a command-line and web harness. On my machine it runs in 2-3 seconds.
* Basic: Added.
* Basic/ast.js: Added.
(Basic.NumberApply):
(Basic.Variable):
(Basic.Const):
(Basic.NumberPow):
(Basic.NumberMul):
(Basic.NumberDiv):
(Basic.NumberNeg):
(Basic.NumberAdd):
(Basic.NumberSub):
(Basic.StringVar):
(Basic.Equals):
(Basic.NotEquals):
(Basic.LessThan):
(Basic.GreaterThan):
(Basic.LessEqual):
(Basic.GreaterEqual):
(Basic.GoTo):
(Basic.GoSub):
(Basic.Def):
(Basic.Let):
(Basic.If):
(Basic.Return):
(Basic.Stop):
(Basic.On):
(sideState.shouldStop):
(Basic.For):
(Basic.Next):
(Basic.Print):
(Basic.Input):
(Basic.Read):
(Basic.Restore):
(Basic.Dim):
(Basic.Randomize):
(Basic.End):
(Basic.Program):
* Basic/basic.js: Added.
(prepare):
(simulate):
* Basic/benchmark.js: Added.
(Benchmark):
(Benchmark.prototype.runIteration.expect):
(Benchmark.prototype.runIteration):
(runBenchmark):
* Basic/caseless_map.js: Added.
(CaselessMap):
* Basic/lexer.js: Added.
(lex.consumeWhitespace):
(lex.consume):
(lex):
* Basic/lexer_test.js: Added.
* Basic/number.js: Added.
(NumberValue):
(NumberValue.prototype.get value):
(NumberValue.prototype.apply):
(NumberValue.prototype.leftApply):
(NumberValue.prototype.assign):
(NumberArray.):
(NumberArray):
(NumberArray.prototype.apply):
(NumberArray.prototype.leftApply):
(NumberFunction):
(NumberFunction.prototype.apply):
(NumberFunction.prototype.leftApply):
(NativeFunction):
(NativeFunction.prototype.apply):
(NativeFunction.prototype.leftApply):
* Basic/parser.js: Added.
(parse):
(parse.pushToken):
(parse.peekToken):
(parse.consumeKind):
(parse.consumeToken):
(parse.parseVariable):
(parse.parseNumericExpression.parsePrimary):
(parse.parseNumericExpression.parseFactor):
(parse.parseNumericExpression.parseTerm):
(parse.parseNumericExpression):
(parse.parseConstant):
(parse.parseStringExpression):
(parse.isStringExpression):
(parse.parseRelationalExpression):
(parse.parseNonNegativeInteger):
(parse.parseGoToStatement):
(parse.parseGoSubStatement):
(parse.parseStatement):
(parse.parseStatements):
* Basic/random.js: Added.
(createRNG):
(createRNGWithFixedSeed):
(createRNGWithRandomSeed):
* Basic/state.js: Added.
(State):
(State.prototype.getValue):
(State.prototype.getSideState):
(State.prototype.abort):
(State.prototype.validate):
* Basic/test.html: Added.
* Basic/test.js: Added.
* Basic/util.js: Added.
(this.performance.performance.now.currentTime):
(else.this.preciseTime.currentTime):
(else.currentTime):
* Skipped: Make sure that we don't run Basic yet.
2016-06-21 Jon Lee <jonlee@apple.com>
Update canvas size when benchmark begins
https://bugs.webkit.org/show_bug.cgi?id=159010
Reviewed by Dean Jackson.
Previously we would evaluate the media queries and assign the canvas size to the test
on body.onload. Instead, do it once the user starts the benchmark.
* Animometer/resources/debug-runner/animometer.js: Move benchmarkController.determineCanvasSize()
to benchmarkController._startBenchmark.
* Animometer/resources/runner/animometer.js: Ditto.
2016-06-21 Jon Lee <jonlee@apple.com>
Add new timestamp option
https://bugs.webkit.org/show_bug.cgi?id=159006
Reviewed by Dean Jackson.
Add a new option to take timestamps from the rAF callback.
* Animometer/developer.html: Added option.
* Animometer/tests/resources/main.js:
(Benchmark): Fall back to using the rAF timestamp if performance.now()
is not available.
(Benchmark._animateLoop): Update how timestamp is set. Prefer to use
local var instead of accessing private var.
2016-06-21 Jon Lee <jonlee@apple.com>
Improvements to Animometer benchmark
https://bugs.webkit.org/show_bug.cgi?id=157738
Reviewed by Dean Jackson.
Provisionally reviewed by Said Abou-Hallawa.
Update tests.
* Animometer/tests/master/text.html: Ensure only three text sizes for
the three canvases.
* Animometer/tests/master/focus.html: Reduce the text size to fit with smaller
particle sizes.
* Animometer/tests/master/resources/focus.js: Remove the quadratic distribution for
particle sizes, and make it linear. Reduce the size variance. Shuffle the math to
reduce some calculations per frame. Fix the placement of the particles which might
otherwise be culled.
* Animometer/tests/master/resources/image-data.js: Reduce the particle size
to encourage larger scores.
2016-06-21 Jon Lee <jonlee@apple.com>
Improvements to Animometer benchmark
https://bugs.webkit.org/show_bug.cgi?id=157738
Reviewed by Dean Jackson.
Provisionally reviewed by Said Abou-Hallawa.
Include confidence interval for the final score, and store the canvas
size in the serialization so that it is accurately shown in results.
* Animometer/developer.html: Add a "confidence" div.
* Animometer/index.html: Ditto. Convert "mean" to "confidence".
* Animometer/resources/debug-runner/animometer.js: Look at options, and
if the configuration is included, update the body class based on it
(similar to what we do when we first load the page). That way, if you
drag-and-drop previous results in, that configuration is reflected in
the dashboard. Show the full confidence interval.
* Animometer/resources/debug-runner/animometer.css:
* Animometer/resources/debug-runner/animometer.js: Style update.
* Animometer/resources/runner/animometer.css:
* Animometer/resources/runner/animometer.js:
(_processData): Propagate the confidence interval values out and calculate
the lower and upper bounds. For now, shortcut the aggregate calculation,
since we only go through one iteration.
(this._processData.calculateScore): Propagate the confidence interval out
to be next to the score. Depending on the controller these values are
calculated differently.
(this._processData._getResultsProperty): Convenience function.
(this._processData.get score): Refactor.
(this._processData.get scoreLowerBound): Get the aggregate lower bound.
(this._processData.get scoreUpperBound): Get the aggregate upper bound.
(window.sectionsManager.setSectionScore):
(window.benchmarkController._startBenchmark): When the benchmark starts, note
the canvas size and add it to options. That way it will be automatically be
serialized.
(window.benchmarkController.showResults): Include the maximum deviation
percentage.
* Animometer/resources/runner/lines.svg: Make the background line up with the
skew.
* Animometer/resources/runner/tests.js:
(Headers.details.text): Refactor.
* Animometer/resources/statistics.js:
(Statistics.largestDeviationPercentage): Convenience function to calculate
the deviation percentage on either end and return the largest deviation.
* Animometer/resources/strings.js:
Allow specifying a regression profile to use instead of taking the one
with the lowest error.
Address an issue in the focus test when the regression calculated ends
up overestimating the change point, causing a cascade of tougher
ramps. The reason behind this is that at max complexity of an initial
ramp, the frame length is very high, and it influences the second
segment of the piecewise regression strongly, causing it to be very
steep. As a result, the first segment, expected to be flat, ends up
covering a higher range of complexity. That makes the change point
much higher than it should be. To avoid this, we will add a sanity
check on the maximum value of the ramp. If the regression's projected
value at the maximum complexity of the current ramp is very slow (less
than 20 fps), 1) reduce the maximum complexity by 20%, and 2) do not
include the regression's change point in the change point estimator.
That estimator is used as the midpoint of the next ramp, and including
the change point from a poor regression can bake in the error. The
controller already knows how to adjust for ramps that are too easy for
the system.
* Animometer/resources/runner/animometer.js:
(this._processData.findRegression): Takes a preferred profile and gives that to
Regression.
(this._processData.calculateScore): With the ramp controller, take the profile
of the ramp that was used the most when calculating the ramp's regression. That
profile is what is used for the test's score.
* Animometer/resources/statistics.js:
(Regression.Utilities.createClass): Update to take an options object which can
specify a profile to calculate with. Otherwise it will continue to use both and
select the one with the lower error.
(_calculateRegression): Fix an issue where we claim 0 error if the regression
calculation fails due to divide-by-zero. Instead reject that regression calculation
by giving it Number.MAX_VALUE.
* Animometer/resources/strings.js: New strings for marking a regression as flat
or slope.
* Animometer/tests/resources/main.js:
(RampController): Rename the thresholds for clarity. Add a threshold that, if
exceeded, will lower the maximum complexity of the next ramp.
(tune): Relax the cdf check to consider whether the interval definitely falls in
the desired frame length threshold.
(processSamples): Include the profile in the ramp.
Update ramp controller test. Increase the length of the test to 30 seconds, and extend
the interval to 120 ms during sampling. Improve the estimation of the ramp parameters.
* Animometer/developer.html: Change default to 30 seconds, and don't show the progress bar
by default.
* Animometer/resources/runner/animometer.js: Change default to 30 seconds.
* Animometer/tests/resources/main.js: A number of improvements to the ramp controller, in
the order in which they appear in the patch:
- With a longer test length use longer ramps with longer intervals to get more data at each
complexity. Keep the 100 ms interval length during the ramp up phase since we don't need to
spend more time there to find the right order of magnitude, but increase it during the
ramps to 120 ms.
- The ramp linearly interpolates the complexity to render based on its timestamp, but it would
never sample the minimum complexity. Instead of lerping max to min complexity from time
0 to t where t is the ramp length, instead lerp from 0 to (t - intervalSampleLength) so that
we can have at least one interval sample at the min complexity for that ramp.
- Some regression calculations only come out with one line segment rather than the two
we expect. This could be due to a noisy ramp or the ramp's range is too narrow. If that's the
case, influence the minimum complexity of the next ramp towards the lowest bound of 1, so that
we ensure that at least part of the ramp is covering a complexity range that the system can
handle at full 60.
- Remove an assignment to interpolatedFrameLength since that is never subsequently used.
Update the format used to serialize the results for analysis.
Each data point used to have named properties for fields like complexity and frame rate.
In addition the serialized numbers had rounding errors that took up many characters.
Update the format by introducing a new data container called SampleData, which contains a
field map. The map maps a string to an array index. Each data point is an array, so, to
get a stat, use the field map to get the array index into the data point. This allows future
versions to track other data, and reduces the size of the output string by two-thirds.
* Animometer/resources/extensions.js:
(Utilities.toFixedNumber): Add convenience function that truncates the number to a fixed
precision, and converts it back to a number.
(SampleData): New class that contains sample data and a field map that maps properties to
an array index.
(get length): Number of data points.
(addField): Add a field to the field map.
(push): Add a data point.
(sort): Sort the data.
(slice): Return new SampleData object with sliced data.
(forEach): Iterate over the data with provided function.
(createDatum):
(getFieldInDatum): Returns the data point associated with the field name by looking it up
in the field map in the datum provided, which can be the datum object itself (an array) or
an index into the data member variable.
(setFieldInDatum): Sets the data point associated with the field name.
(at): Returns the data point at the provided index.
(toArray): Serializes the data where the field map serves as property names for each point.
* Animometer/resources/debug-runner/graph.js:
(updateGraphData): Remove unused _testData. Convert the data to the old array format for the
graph to use, since the old format was much easier to work with when displaying the graphs.
(onGraphTypeChanged): For some controllers, no alternative score or mean is provided.
* Animometer/resources/runner/animometer.css:
* Animometer/resources/runner/animometer.js: Refactor to use SampleData. Update JSON output
to only go to 3 digits of precision for purposes of reducing the data size.
* Animometer/resources/strings.js: Add new strings to put into the field maps.
* Animometer/tests/resources/main.js: Refactor to use SampleData.
* Animometer/developer.html:
* Animometer/index.html: Restructure results table for both pages. Add charset attribute to
tests.js include.
* Animometer/resources/debug-runner/animometer.css: Clear out styles from release runner.
* Animometer/resources/debug-runner/graph.js:
(onGraphTypeChanged): Update score and mean if bootstrap results are available from the
controller, since not all controllers do bootstrapping.
* Animometer/resources/debug-runner/tests.js: Update header text.
* Animometer/resources/runner/animometer.css: Include confidence interval in results.
* Animometer/resources/runner/animometer.js:
(ResultsTable._addHeader): Header contents can be HTML, so use innerHTML instead.
(ResultsTable._addBody): Add tbody element.
(ResultsTable._addTest): Allow a data cell to invoke a JS function to get its contents.
(window.benchmarkController.showResults): Add table that includes tests' confidence intervals.
* Animometer/resources/runner/tests.js:
(Headers.details.text): Add new details table that includes bootstrap confidence interval.
The interval can be asymmetric, but for simplicity, report the maximum deviation percentage
on either side of the bootstrap median.
* Animometer/resources/statistics.js:
(bootstrap): Include the confidence percentage in the return object.
Report canvas size in results.
* Animometer/developer.html: Add markup to indicate whether a small, medium, or large
canvas was used.
* Animometer/index.html: Ditto.
* Animometer/resources/debug-runner/animometer.js: Call determineCanvasSize().
* Animometer/resources/runner/animometer.css: Update styles to set the canvas based on the
body class size.
* Animometer/resources/runner/animometer.js:
(window.benchmarkController.initialize): Update styles to set the canvas based on the
body class size.
(window.benchmarkController.determineCanvasSize): Run various media queries and set the body
class based on the size of the device.
* Animometer/developer.html: Refactor to include the main CSS file, and redo
the layout so that it doesn't rely on flexbox.
* Animometer/resources/debug-runner/animometer.css:
* Animometer/resources/debug-runner/animometer.js:
(updateDisplay): Since various parts of the script alter the body class, we can't
replace the className directly. Instead, remove all display-based values and then add
the one that was selected.
* Animometer/resources/debug-runner/graph.js:
(updateGraphData): To set the size of the graph, use window.innerHeight.
* Animometer/resources/runner/animometer.js:
(window.sectionsManager.showSection): Since various parts of the script alter the body
class, we can't replace the className directly. Remove all of the section classes
individually and then add the one desired.
* Animometer/tests/resources/stage.css: Remove -apple-system as a font to use in the
stage.
2016-06-12 Filip Pizlo <fpizlo@apple.com>
Fix round-down goof in Air.js's ShuffleCustom.forEachArg
https://bugs.webkit.org/show_bug.cgi?id=158674
Reviewed by Michael Saboff.
x / 3 * 3 is not how you round down to multiples of 3 in JavaScript. You need to do
Math.floor(x / 3) * 3 instead.
This is a benign change, because having extra arguments to a Shuffle is not something we
actually take advantage of yet. But I think it's best to match the original C++ code's
intent.
* Air.js/custom.js:
(const.ShuffleCustom.forEachArg):
2016-06-11 Filip Pizlo <fpizlo@apple.com>
Unreviewed, skip Air.js. It got unskipped when I renamed it from JSAir.
* Skipped:
2016-06-10 Filip Pizlo <fpizlo@apple.com>
Make it easy to package Air.js
https://bugs.webkit.org/show_bug.cgi?id=158652
Reviewed by Benjamin Poulain.
If you want to give Air.js to someone, you can now do:
cd PerformanceTests/Air.js
./make_dist.sh
This will create Air.js.tar.gz and a directory called Air.js. If you want to send someone
the benchmark, just send either of those things and tell them to look at index.html.
You may have to edit make_dist.sh for wherever you have Markdown.pl. You can get that from
https://daringfireball.net/projects/markdown/
* Air.js/make_dist.sh: Added.
* Air.js/test.html:
2016-06-10 Filip Pizlo <fpizlo@apple.com>
Unreviewed, make the link to test.html into an actual link.
* Air.js/README.md:
2016-06-10 Filip Pizlo <fpizlo@apple.com>
Fix some text in Air.js/README.md
https://bugs.webkit.org/show_bug.cgi?id=158650
Reviewed by Benjamin Poulain.
I read the text again and found bugs:
- We never actually say how to run the benchmark. This change adds a blurb about how to run
it.
- We both say that allocateStack is responsible for the bulk of the running time and that
we haven't measured where the bulk of the time is spent. This changes the text to say that
it was a goal to make allocateStack be the hottest part of the benchmark, but that we did
not measure this.
* Air.js/README.md:
2016-06-10 Filip Pizlo <fpizlo@apple.com>
Air.js should have some documentation
https://bugs.webkit.org/show_bug.cgi?id=158648
Reviewed by Keith Miller.
I want to be able to point people at a document if they want to know more about this
benchmark.
* Air.js/README.md: Added.
2016-06-10 Filip Pizlo <fpizlo@apple.com>
Rename JSAir to Air.js.
Rubber stamped by Mark Lam.
* Air.js: Copied from PerformanceTests/JSAir.
* Air.js/airjs-tests.yaml: Copied from PerformanceTests/JSAir/jsair-tests.yaml.
* Air.js/benchmark.js: Copied from PerformanceTests/JSAir/benchmark.js.
(Benchmark):
* Air.js/jsair-tests.yaml: Removed.
* Air.js/payload-airjs-ACLj8C.js: Copied from PerformanceTests/JSAir/payload-jsair-ACLj8C.js.
* Air.js/payload-jsair-ACLj8C.js: Removed.
* Air.js/stress-test.js: Copied from PerformanceTests/JSAir/stress-test.js.
* Air.js/test.html: Copied from PerformanceTests/JSAir/test.html.
* Air.js/test.js: Copied from PerformanceTests/JSAir/test.js.
* JSAir: Removed.
* JSAir/all.js: Removed.
* JSAir/allocate_stack.js: Removed.
* JSAir/arg.js: Removed.
* JSAir/basic_block.js: Removed.
* JSAir/benchmark.js: Removed.
* JSAir/code.js: Removed.
* JSAir/custom.js: Removed.
* JSAir/frequented_block.js: Removed.
* JSAir/insertion_set.js: Removed.
* JSAir/inst.js: Removed.
* JSAir/jsair-tests.yaml: Removed.
* JSAir/liveness.js: Removed.
* JSAir/opcode.js: Removed.
* JSAir/payload-gbemu-executeIteration.js: Removed.
* JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
* JSAir/payload-jsair-ACLj8C.js: Removed.
* JSAir/payload-typescript-scanIdentifier.js: Removed.
* JSAir/reg.js: Removed.
* JSAir/stack_slot.js: Removed.
* JSAir/stress-test.js: Removed.
* JSAir/strip-hash.rb: Removed.
* JSAir/symbols.js: Removed.
* JSAir/test.html: Removed.
* JSAir/test.js: Removed.
* JSAir/tmp.js: Removed.
* JSAir/tmp_base.js: Removed.
* JSAir/util.js: Removed.
2016-06-10 Filip Pizlo <fpizlo@apple.com>
JSC Stress Test failing: jsair-tests.yaml/test.js.ftl-eager-no-cjit
https://bugs.webkit.org/show_bug.cgi?id=158571
Reviewed by Keith Miller.
Introduce a different harness for run-jsc-stress-tests, which runs for a minimum of 10
iterations and then tries to do any number of "bonus" iterations until it's been running for
two seconds. Since this is the sort of test that isn't really meant to stress anything in
particular, I think it's OK if it is time-limited in this way. The worst case is that some
of its failures will be flaky, but I think that they would have been flaky anyway given the
complexity of the test.
* JSAir/benchmark.js:
(Benchmark):
(Benchmark.prototype.runIteration):
(benchmark): Deleted.
* JSAir/jsair-tests.yaml:
* JSAir/stress-test.js: Added.
(preciseTime):
* JSAir/test.html:
* JSAir/test.js:
2016-06-09 Filip Pizlo <fpizlo@apple.com>
Unreviewed, teach the perf bots not to run JSAir.
* Skipped:
2016-06-08 Filip Pizlo <fpizlo@apple.com>
Use more ES6 features in JSAir
https://bugs.webkit.org/show_bug.cgi?id=158497
Reviewed by Keith Miller.
This improves JSAir with the following ES6 features suggested by JoePeck:
- String interpolation.
- Destructuring inside PatchCustom.
- Default arguments.
All of these things are on hot paths.
Note that I didn't use string interpolation everywhere that I could, only in those places
where it made the code more readable. In Ruby, I used the style that if the interpolation
expression has any non-trivial stuff (like a ternary operator, a chain of calls, or embedded
strings) then it's better to use regular strcat. I think that's what I carried over to here.
Note that the previous change (Add result validation to JSAir) also made the Proxy code not
dead, though it's not necessarily on the hot path. The Proxy isn't called into frequently
but it's used from a function that is otherwise hot, so if calling into the Proxy prevents
that function from being optimized then it will hurt so good.
I also reenabled tail calls in a few places.
This change doesn't seem to change the performance of the benchmark for us. That's expected
since these ES6 features are cheap. Note that this claim doesn't include Proxy, which was
added in a separate change and that change did make the benchmark overall more expensive.
* JSAir/allocate_stack.js:
(allocateStack):
* JSAir/arg.js:
(Arg.createBitImm64):
(Arg.createAddr):
(Arg.createStack):
(Arg.logScale):
(Arg.createIndex):
* JSAir/basic_block.js:
(BasicBlock.get headerString):
(BasicBlock.prototype.get if):
(BasicBlock):
* JSAir/benchmark.js:
(benchmark):
* JSAir/code.js:
(Code):
(Code.prototype.addBlock):
(Code.prototype.addStackSlot):
(Code.prototype.newTmp):
(Code.prototype.get size):
(Code.prototype.get blocks):
(Code.prototype.get stackSlots):
(Code.prototype.tmps):
(Code.prototype.get callArgAreaSize):
(Code.prototype.toString):
* JSAir/custom.js:
(const.PatchCustom.forEachArg):
* JSAir/inst.js:
(Inst):
* JSAir/reg.js:
(Reg.prototype.toString):
* JSAir/util.js:
(symbolName):
(lowerSymbolName):
2016-06-07 Filip Pizlo <fpizlo@apple.com>
Add result validation to JSAir
https://bugs.webkit.org/show_bug.cgi?id=158493
Reviewed by Saam Barati.
This adds the ability to hash a Code in a way that matches the C++ code's hashing of Code.
This allows us to check if the Code that JSAir sees is the code that C++ saw. We use this to
check the Code before and after allocateStack, and compare against hashes we got from C++.
Doing this uncovered bugs. roundUpToMultipleOf wasn't doing anything. allocateStack was not
allocating things correctly because I was concatting a Set to an Array, which doesn't really
work. Now these bugs are fixed.
The checking step adds to the running time so I reduced the number of iterations. The
benchmark spends a decent amount of its time computing Code hashes; I think it's around 1/3
total. This is probably OK. It's better to verify the results even if the running time is
not all in the "core" of the algorithm.
Also add a run-jsc-stress-tests yaml file to allow this to run as a test.
* JSAir/allocate_stack.js:
* JSAir/arg.js:
(Arg.createImm):
(Arg.createBigImm):
(Arg.createBitImm):
(Arg.createBitImm64):
(Arg.createWidth):
(Arg.createSpecial):
(Arg.prototype.get kind):
(Arg.prototype.get isTmp):
(Arg.prototype.get isImm):
(Arg.prototype.get isSomeImm):
(Arg.prototype.get isSomeBigImm):
(Arg.prototype.get isCondition):
(Arg.prototype.get isWidth):
(Arg.prototype.get isSpecial):
(Arg.prototype.get isAlive):
(Arg.prototype.get tmp):
(Arg.prototype.get value):
(Arg.prototype.get lowValue):
(Arg.prototype.get highValue):
(Arg.prototype.get base):
(Arg.prototype.get isGP):
(Arg.prototype.get isFP):
(Arg.prototype.isValidForm):
(Arg.prototype.get isInvertible):
(Arg.kindCode):
(Arg.prototype.hash):
(Arg.prototype.toString):
(Arg):
* JSAir/basic_block.js:
(BasicBlock.get successorBlocks):
* JSAir/benchmark.js:
(benchmark):
* JSAir/code.js:
(Code.prototype.setFrameSize):
(Code.prototype.hash):
(Code.prototype.toString):
(Code):
* JSAir/inst.js:
(Inst.prototype.get hasNonArgEffects):
(Inst.prototype.hash):
(Inst.prototype.toString):
(Inst):
* JSAir/jsair-tests.yaml: Added.
* JSAir/opcode.js:
(Inst_forEachArg):
(Inst_hasNonArgEffects):
(opcodeCode):
* JSAir/payload-gbemu-executeIteration.js:
(createPayloadGbemuExecuteIteration):
* JSAir/payload-imaging-gaussian-blur-gaussianBlur.js:
(createPayloadImagingGaussianBlurGaussianBlur):
* JSAir/payload-jsair-ACLj8C.js:
(createPayloadJSAirACLj8C):
* JSAir/payload-typescript-scanIdentifier.js:
(createPayloadTypescriptScanIdentifier):
* JSAir/reg.js:
(Reg.prototype.get isReg):
(Reg.prototype.hash):
(Reg.prototype.toString):
* JSAir/stack_slot.js:
(StackSlot.prototype.setOffsetFromFP):
(StackSlot.prototype.hash):
(StackSlot.prototype.toString):
* JSAir/symbols.js:
(relCondCode):
(resCondCode):
(doubleCondCode):
* JSAir/test.html:
* JSAir/tmp.js:
(Tmp.prototype.get isReg):
(Tmp.prototype.hash):
(Tmp.prototype.toString):
* JSAir/util.js:
(roundUpToMultipleOf):
(symbolName):
2016-06-07 Filip Pizlo <fpizlo@apple.com>
Implement Air::allocateStack() in ES6 to see how much of a bad idea that is
https://bugs.webkit.org/show_bug.cgi?id=158318
Reviewed by Saam Barati.
This adds a new benchmark for us to play with called JSAir. It's a complete ES6
implementation of Air's allocateStack() phase along with all of Air needed to run that
phase. This includes things like stack slots, registers, temporaries, basic blocks,
instructions, and all of the code for iterating over, inspecting, and modifying those
things.
To make this work, JSC can now dump Air just before allocateStack() in the form of JS code
that creates a Code object that matches exactly what C++ Air saw. This benchmark comprises
four Air IRs:
- Octane/gbemu's largest function, executeIteration.
- Kraken/imaging-gaussian-blur's largest function in OSR entry mode, gaussuanBlur.
- Octane/typescript's largest function that is actually hot, scanIdentifier.
- JSAir's largest hot function, which is anonymous, so we call it by its hash (ACLj8C).
This runs in about 2 seconds on my machine in JSC trunk. It includes both a commandline
harness and a web harness. JSAir is almost exactly 100x slower in ES6 in WebKit than the
C++ Air::allocateStack() phase on which it is based.
JSAir uses the following ES6 features:
- Symbol.
- for-of.
- arrow functions.
- Map/Set.
- let/const.
- classes.
All of these things are used in anger and should end up on the hot path. There is also code
that uses Proxies, but it ends up being dead.
We can improve this even more:
I still need to add result validation: https://bugs.webkit.org/show_bug.cgi?id=158493
I want to make it use more ES6 features: https://bugs.webkit.org/show_bug.cgi?id=158497
* JSAir: Added.
* JSAir/all.js: Added.
* JSAir/allocate_stack.js: Added.
(allocateStack.attemptAssignment):
(allocateStack.assign):
(allocateStack.interfere):
(allocateStack.):
(allocateStack):
* JSAir/arg.js: Added.
(Arg):
(Arg.isAnyUse):
(Arg.isColdUse):
(Arg.isWarmUse):
(Arg.cooled):
(Arg.isEarlyUse):
(Arg.isLateUse):
(Arg.isAnyDef):
(Arg.isEarlyDef):
(Arg.isLateDef):
(Arg.isZDef):
(Arg.typeForB3Type):
(Arg.widthForB3Type):
(Arg.conservativeWidth):
(Arg.minimumWidth):
(Arg.bytes):
(Arg.widthForBytes):
(Arg.createTmp):
(Arg.fromReg):
(Arg.createImm):
(Arg.createBigImm):
(Arg.createBitImm):
(Arg.createBitImm64):
(Arg.createAddr):
(Arg.createStack):
(Arg.createCallArg):
(Arg.createStackAddr):
(Arg.isValidScale):
(Arg.logScale):
(Arg.createIndex):
(Arg.createRelCond):
(Arg.createResCond):
(Arg.createDoubleCond):
(Arg.createWidth):
(Arg.prototype.get kind):
(Arg.prototype.get isTmp):
(Arg.prototype.get isImm):
(Arg.prototype.get isBigImm):
(Arg.prototype.get isBitImm):
(Arg.prototype.get isBitImm64):
(Arg.prototype.get isSomeImm):
(Arg.prototype.get isAddr):
(Arg.prototype.get isStack):
(Arg.prototype.get isCallArg):
(Arg.prototype.get isIndex):
(Arg.prototype.get isMemory):
(Arg.prototype.get isStackMemory):
(Arg.prototype.get isRelCond):
(Arg.prototype.get isResCond):
(Arg.prototype.get isDoubleCond):
(Arg.prototype.get isCondition):
(Arg.prototype.get isWidth):
(Arg.prototype.get isAlive):
(Arg.prototype.get tmp):
(Arg.prototype.get value):
(Arg.prototype.get base):
(Arg.prototype.get hasOffset):
(Arg.prototype.get offset):
(Arg.prototype.get stackSlot):
(Arg.prototype.get index):
(Arg.prototype.get scale):
(Arg.prototype.get logScale):
(Arg.prototype.get width):
(Arg.prototype.get isGPTmp):
(Arg.prototype.get isFPTmp):
(Arg.prototype.get isGP):
(Arg.prototype.get isFP):
(Arg.prototype.get hasType):
(Arg.prototype.get type):
(Arg.prototype.isType):
(Arg.prototype.isCompatibleType):
(Arg.prototype.get isGPR):
(Arg.prototype.get gpr):
(Arg.prototype.get isFPR):
(Arg.prototype.get fpr):
(Arg.prototype.get isReg):
(Arg.prototype.get reg):
(Arg.isValidImmForm):
(Arg.isValidBitImmForm):
(Arg.isValidBitImm64Form):
(Arg.isValidAddrForm):
(Arg.isValidIndexForm):
(Arg.prototype.isValidForm):
(Arg.prototype.forEachTmpFast):
(Arg.prototype.usesTmp):
(Arg.prototype.forEachTmp):
(Arg.prototype.is):
(Arg.prototype.as):
(Arg.prototype.forEachFast):
(Arg.prototype.forEach):
(Arg.extract):
(Arg.forEachFast):
(Arg.forEach):
(Arg.prototype.get condition):
(Arg.prototype.get isInvertible):
(Arg.prototype.toString):
* JSAir/basic_block.js: Added.
(BasicBlock):
(BasicBlock.prototype.get index):
(BasicBlock.prototype.get size):
(BasicBlock.prototype.Symbol.iterator):
(BasicBlock.prototype.at):
(BasicBlock.get last):
(BasicBlock.get insts):
(BasicBlock.get numSuccessors):
(BasicBlock.get successors):
(BasicBlock.get successorBlocks.):
(BasicBlock.get successorBlocks):
(BasicBlock.set get numPredecessors):
(BasicBlock.get predecessors):
(BasicBlock.get frequency):
(BasicBlock.get headerString):
(BasicBlock.get footerString):
* JSAir/benchmark.js: Added.
(benchmark):
* JSAir/code.js: Added.
(Code):
(Code.prototype.addBlock):
(Code.prototype.addStackSlot):
(Code.prototype.newTmp):
(Code.prototype.get size):
(Code.prototype.at):
(Code.prototype.Symbol.iterator):
(Code.prototype.get blocks):
(Code.prototype.get stackSlots):
(Code.prototype.tmps):
(Code.prototype.get callArgAreaSize):
(Code.prototype.requestCallArgAreaSize):
(Code.prototype.get frameSize):
(Code.prototype.setFrameSize):
(Code.prototype.toString):
* JSAir/custom.js: Added.
(const.ShuffleCustom.forEachArg):
(const.ShuffleCustom.hasNonArgNonControlEffects):
(const.PatchCustom.forEachArg):
(const.PatchCustom.hasNonArgNonControlEffects):
(const.CCallCustom.forEachArg):
(const.CCallCustom.hasNonArgNonControlEffects):
(const.ColdCCallCustom.forEachArg):
(const.ColdCCallCustom.hasNonArgNonControlEffects):
* JSAir/frequented_block.js: Added.
(FrequentedBlock):
(FrequentedBlock.prototype.toString):
* JSAir/insertion_set.js: Added.
(Insertion):
(Insertion.prototype.get index):
(Insertion.prototype.get element):
(Insertion.prototype.lessThan):
(InsertionSet):
(InsertionSet.prototype.appendInsertion):
(InsertionSet.prototype.append):
(InsertionSet.prototype.execute):
* JSAir/inst.js: Added.
(Inst):
(Inst.prototype.append):
(Inst.prototype.clear):
(Inst.prototype.get opcode):
(Inst.prototype.get args):
(Inst.prototype.visitArg):
(Inst.prototype.forEachTmpFast):
(Inst.prototype.forEachArg):
(Inst.prototype.forEachTmp):
(Inst.prototype.forEach):
(Inst.forEachDef):
(Inst.forEachDefWithExtraClobberedRegs):
(Inst.prototype.get hasNonArgEffects):
(Inst.prototype.toString):
* JSAir/liveness.js: Added.
(Liveness):
(Liveness.prototype.get thing):
(Liveness.prototype.get code):
(Liveness.prototype.get liveAtHead):
(Liveness.prototype.get liveAtTail):
(Liveness.prototype.localCalc.LocalCalc):
(Liveness.prototype.localCalc.LocalCalc.prototype.get liveSet):
(Liveness.prototype.localCalc.LocalCalc.prototype.execute):
(Liveness.prototype.localCalc):
* JSAir/opcode.js: Added.
(Inst_forEachArg):
(Inst_hasNonArgEffects):
* JSAir/payload-gbemu-executeIteration.js: Added.
(createPayloadGbemuExecuteIteration):
* JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Added.
(createPayloadImagingGaussianBlurGaussianBlur):
* JSAir/payload-jsair-ACLj8C.js: Added.
(createPayloadJSAirACLj8C):
* JSAir/payload-typescript-scanIdentifier.js: Added.
(createPayloadTypescriptScanIdentifier):
* JSAir/reg.js: Added.
(Reg):
(Reg.fromReg):
(Reg.prototype.get index):
(Reg.prototype.get type):
(Reg.prototype.get name):
(Reg.prototype.get isCalleeSave):
(Reg.prototype.get isReg):
(Reg.prototype.toString):
(Reg.extract):
(Reg.forEachFast):
(Reg.forEach):
(newGPR):
(Reg.gprs.Reg.fprs.Reg.calleeSaveGPRs.Reg.calleeSaveFPRs.Reg.calleeSaves):
* JSAir/stack_slot.js: Added.
(StackSlot):
(StackSlot.prototype.get byteSize):
(StackSlot.prototype.get kind):
(StackSlot.prototype.get isLocked):
(StackSlot.prototype.get isSpill):
(StackSlot.prototype.get index):
(StackSlot.prototype.ensureSize):
(StackSlot.prototype.get alignment):
(StackSlot.prototype.get offsetFromFP):
(StackSlot.prototype.setOffsetFromFP):
(StackSlot.prototype.toString):
(StackSlot.extract):
(StackSlot.forEachFast):
(StackSlot.forEach):
* JSAir/symbols.js: Added.
* JSAir/test.html: Added.
* JSAir/test.js: Added.
* JSAir/tmp.js: Added.
(Tmp):
(Tmp.fromReg):
(Tmp.prototype.get index):
(Tmp.prototype.get type):
(Tmp.prototype.get isReg):
(Tmp.prototype.toString):
(Tmp.extract):
(Tmp.forEachFast):
(Tmp.forEach):
* JSAir/tmp_base.js: Added.
(TmpBase.prototype.get isGP):
(TmpBase.prototype.get isFP):
(TmpBase.prototype.get isGPR):
(TmpBase.prototype.get isFPR):
(TmpBase.prototype.get reg):
(TmpBase.prototype.get gpr):
(TmpBase.prototype.get fpr):
(TmpBase):
* JSAir/util.js: Added.
(isRepresentableAsInt32):
(addIndexed):
(roundUpToMultipleOf):
(symbolName):
(mergeIntoSet):
(nonEmptyRangesOverlap):
(rangesOverlap):
(removeAllMatching):
(swap):
(bubble):
(bubbleSort):
(currentTime):
(else.currentTime):
2016-05-26 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC] Allow JSBench to use precise time
https://bugs.webkit.org/show_bug.cgi?id=158050
Reviewed by Geoffrey Garen.
* JSBench/amazon-chrome-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/amazon-chrome/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/amazon-firefox-win/urm.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/amazon-firefox/urm.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/amazon-safari/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/facebook-chrome-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/facebook-chrome/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/facebook-firefox-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/facebook-firefox/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/facebook-safari/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/google-chrome-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/google-chrome/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/google-firefox-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/google-firefox/uem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/google-safari/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/harness.js:
(runBenchmark.window.currentTimeInMS):
(runBenchmark.else.window.currentTimeInMS):
* JSBench/twitter-chrome-win/rem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/twitter-chrome/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/twitter-firefox-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/twitter-firefox/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/twitter-safari/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/yahoo-chrome-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/yahoo-chrome/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/yahoo-firefox-win/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/yahoo-firefox/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
* JSBench/yahoo-safari/urem.js:
(else.window.performance.window.performance.now.currentTimeInMS):
(else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
(else.else.currentTimeInMS):
(onload.cb):
(onload):
2016-05-25 Geoffrey Garen <ggaren@apple.com>
replaceable own properties seem to ignore replacement after property caching
https://bugs.webkit.org/show_bug.cgi?id=158091
Reviewed by Darin Adler.
* MallocBench/MallocBench.xcodeproj/project.pbxproj:
* MallocBench/MallocBench/Benchmark.cpp:
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::doMallocOp):
* MallocBench/MallocBench/Interpreter.h:
* MallocBench/MallocBench/fastMallocLog.63316.ops: Added.
* MallocBench/MallocBench/jetstream.cpp: Added.
(benchmark_jetstream):
* MallocBench/MallocBench/jetstream.h: Added.
2016-05-25 Keith Miller <keith_miller@apple.com>
Unreviewed, add JSBench to the skipped list for now since it doesn't
work currently.
* Skipped:
2016-05-17 Keith Miller <keith_miller@apple.com>
We should have JSBench in PerformanceTests
https://bugs.webkit.org/show_bug.cgi?id=157952
Rubber-stamped by Saam Barati.
There are some slight changes to the layout of the test directory
to make it work nicely with run-jsc-benchmarks. Before JSBench
had each of the browser specific sub-tests in a sub-directory.
These have been flattened e.g. amazon/safari/ has become
amazon-safari/.
* JSBench/amazon-chrome-win/urem.html: Added.
* JSBench/amazon-chrome-win/urem.js: Added.
* JSBench/amazon-chrome/urem.html: Added.
* JSBench/amazon-chrome/urem.js: Added.
* JSBench/amazon-firefox-win/urm.html: Added.
* JSBench/amazon-firefox-win/urm.js: Added.
* JSBench/amazon-firefox/urm.html: Added.
* JSBench/amazon-firefox/urm.js: Added.
* JSBench/amazon-safari/urem.html: Added.
* JSBench/amazon-safari/urem.js: Added.
* JSBench/browsercheck.js: Added.
* JSBench/facebook-chrome-win/urem.html: Added.
* JSBench/facebook-chrome-win/urem.js: Added.
* JSBench/facebook-chrome/urem.html: Added.
* JSBench/facebook-chrome/urem.js: Added.
* JSBench/facebook-firefox-win/urem.html: Added.
* JSBench/facebook-firefox-win/urem.js: Added.
* JSBench/facebook-firefox/urem.html: Added.
* JSBench/facebook-firefox/urem.js: Added.
* JSBench/facebook-safari/urem.html: Added.
* JSBench/facebook-safari/urem.js: Added.
* JSBench/google-chrome-win/urem.html: Added.
* JSBench/google-chrome-win/urem.js: Added.
* JSBench/google-chrome/urem.html: Added.
* JSBench/google-chrome/urem.js: Added.
* JSBench/google-firefox-win/urem.html: Added.
* JSBench/google-firefox-win/urem.js: Added.
* JSBench/google-firefox/uem.html: Added.
* JSBench/google-firefox/uem.js: Added.
* JSBench/google-safari/urem.html: Added.
* JSBench/google-safari/urem.js: Added.
* JSBench/harness.html: Added.
* JSBench/harness.js: Added.
* JSBench/harness.py: Added.
* JSBench/index.html: Added.
* JSBench/reload.html: Added.
* JSBench/twitter-chrome-win/rem.html: Added.
* JSBench/twitter-chrome-win/rem.js: Added.
* JSBench/twitter-chrome/urem.html: Added.
* JSBench/twitter-chrome/urem.js: Added.
* JSBench/twitter-firefox-win/urem.html: Added.
* JSBench/twitter-firefox-win/urem.js: Added.
* JSBench/twitter-firefox/urem.html: Added.
* JSBench/twitter-firefox/urem.js: Added.
* JSBench/twitter-safari/urem.html: Added.
* JSBench/twitter-safari/urem.js: Added.
* JSBench/yahoo-chrome-win/urem.html: Added.
* JSBench/yahoo-chrome-win/urem.js: Added.
* JSBench/yahoo-chrome/urem.html: Added.
* JSBench/yahoo-chrome/urem.js: Added.
* JSBench/yahoo-firefox-win/urem.html: Added.
* JSBench/yahoo-firefox-win/urem.js: Added.
* JSBench/yahoo-firefox/urem.html: Added.
* JSBench/yahoo-firefox/urem.js: Added.
* JSBench/yahoo-safari/urem.html: Added.
* JSBench/yahoo-safari/urem.js: Added.
2016-05-20 Ryosuke Niwa <rniwa@webkit.org>
run-benchmark's results should contain Animometer's debug output
https://bugs.webkit.org/show_bug.cgi?id=157941
Reviewed by Stephanie Lewis.
Made developer.html support the JSON generated by run-benchmark which stores everything under debugOutput.
* Animometer/resources/debug-runner/animometer.js:
(Utilities.initialize): Unwrap debugOutput in the case run-benchmark's result JSON is used.
2016-05-18 Timothy Hatcher <timothy@apple.com>
Make Animometer work in all browsers
https://bugs.webkit.org/show_bug.cgi?id=157855
rdar://problem/26338521
Reviewed by Jon Lee.
* Animometer/resources/runner/logo.svg: Use a symbol instead
of putting the id on the root svg. This works in all browsers.
2016-05-07 Timothy Hatcher <timothy@apple.com>
Update Animometer design
https://bugs.webkit.org/show_bug.cgi?id=157449
Reviewed by Darin Adler.
* Animometer/developer.html: Stop including runner/animometer.css.
* Animometer/index.html: Udpated elements to fit new styles.
* Animometer/resources/debug-runner/animometer.css:
Copy the old runner/animometer.css to here so the debug runner is unaffected.
* Animometer/resources/runner/animometer.css:
New styles for the design. Drop flex box for broad browser support.
* Animometer/resources/runner/animometer.js:
(ResultsTable.clear): Use textContent.
(window.sectionsManager.showSection): Add class to the body.
(window.sectionsManager.setSectionScore): Use textContent, not innerHTML.
* Animometer/resources/runner/crystal.svg: Added.
* Animometer/resources/runner/lines.svg: Added.
* Animometer/resources/runner/logo.svg: Added.
* Animometer/resources/runner/tests.js: Shorten test name and title case them.
2016-05-06 Manuel Rego Casasnovas <rego@igalia.com>
[css-grid] Unprefix CSS Grid Layout properties
https://bugs.webkit.org/show_bug.cgi?id=157137
Reviewed by Simon Fraser.
Remove "-webkit" prefix from all the grid layout properties,
including the display value.
Update the source code to remove the prefix where it was used too.
* Layout/auto-grid-lots-of-data.html:
* Layout/fixed-grid-lots-of-data.html:
* Layout/fixed-grid-lots-of-stretched-data.html:
2016-04-25 Geoffrey Garen <ggaren@apple.com>
bmalloc: Misc improvements to MallocBench
https://bugs.webkit.org/show_bug.cgi?id=157004
Reviewed by Darin Adler.
* MallocBench/run-malloc-benchmarks: Added --memory and --memory_warning
modes for focused memory testing.
* MallocBench/MallocBench/Benchmark.cpp:
(Benchmark::printReport): Clarified output.
(Benchmark::currentMemoryBytes): Added compressed memory because top
does the same. (It always happens to zero in the benchmarks we run. But
this is good for sanity.)
* MallocBench/MallocBench/CommandLine.cpp: Moved up to 8 runs to reduce
variance.
* MallocBench/MallocBench/alloc_free.cpp:
(benchmark_alloc_free): Cycle a single allocation in order to stress
the effect of merging on calls to madvise.
* MallocBench/MallocBench/big.cpp:
(benchmark_big): Graduated to 8kB-128kB because medium tests up to 8 and
our large allocator doesn't kick in until 64kB.
* MallocBench/MallocBench/medium.cpp:
(benchmark_medium): Test all the way down to 1kB because our large
allocator used to service 1kB allocations and 1kB is an interesting
middle size where memory is unusually large but allocation throughput
still matters.
* MallocBench/MallocBench/stress.cpp:
(benchmark_stress): Reduced the churn count to match stress_aligned
because this test was taking too long to complete.
* MallocBench/MallocBench/stress_aligned.cpp:
(benchmark_stress_aligned): Our new large allocator can handle even
more absurdly large values.
2016-04-25 Simon Fraser <simon.fraser@apple.com>
Add a content animation test that uses SVG animation.
https://bugs.webkit.org/show_bug.cgi?id=156827
* Animation/svg-animation.html: Added.
* Skipped:
2016-04-22 Simon Fraser <simon.fraser@apple.com>
Skip two content animation tests which are only meant for iOS testing.
* Animation/css-animation.html: Added.
* Animation/raf-animation.html: Added.
* Skipped:
2016-04-20 Simon Fraser <simon.fraser@apple.com>
Add content animation tests to benchmark_runner, and allow the runner to collect device data as part of the results
https://bugs.webkit.org/show_bug.cgi?id=156827
Add two files missing from the previous commit.
* Animation/css-animation.html: Added.
* Animation/raf-animation.html: Added.
2016-04-20 Simon Fraser <simon.fraser@apple.com>
Add content animation tests to benchmark_runner, and allow the runner to collect device data as part of the results
https://bugs.webkit.org/show_bug.cgi?id=156827
Reviewed by Stephanie Lewis.
Two new files for the content-animation suite.
After patching for use in the benchmark, these tests are a little different to other benchmarks.
The test content itself does not collect performance data; the tests spit out a boilerplate JSON
result with a placeholder for framerate, which is collected in native code.
When run as a benchmark, test completion involves a couple of bounces between the test and MobileSafari.
Test completion is initiated by a setTimeout() in the test, at which point location.hash is set to "#done".
MobileSafari detects that, and asynchronously dumps performance data. Once this is complete, MobileSafari
changes the URL has to "#submit", which triggers the XHR to the test relay that indicates the test is
complete.
* Animation/css-animation.html: Added.
* Animation/raf-animation.html: Added.
2016-04-15 Jon Lee <jonlee@apple.com>
Animometer test could report a NaN
https://bugs.webkit.org/show_bug.cgi?id=156646
Reviewed by Darin Adler.
Provisionally reviewed by Said Abou-Hallawa.
* Animometer/tests/resources/main.js:
(didFinishInterval): The ramp controller has a first phase where it ramps up the complexity and
reacts based on how well the system handles the load. The assumption was that it would handle at least
1 particle easily. That is not always the case. As a result, an interpolation calculation could
end up setting an upper bound of NaN.
This occurs because we never get out of the first tier, so this._lastTierComplexity is undefined.
Now that we guarantee a minimum complexity of 1, modify the conditional to check for this._lastTierComplexity
before interpolating the upper bound of the first ramp. In the case where the system struggles with
1 particle, set it to currentComplexity.
2016-04-09 Jon Lee <jonlee@apple.com>
Update Animometer to accommodate different screens
https://bugs.webkit.org/show_bug.cgi?id=156449
Reviewed by Darin Adler.
Provisionally reviewed by Said Abou-Hallawa.
* Animometer/index.html: Wrap button in a container to add padding at the bottom.
* Animometer/resources/debug-runner/animometer.css:
(@media screen and (min-device-width: 1800px)): Deleted.
(@media screen and (min-width: 1800px)): Cannot use min-device-width since it may match incorrectly.
(screen and (max-device-height: 414px) and (orientation: landscape)): Some devices swap device width
and height with orientation change.
* Animometer/resources/runner/animometer.css: Similar.
(screen and (min-device-width: 1024px) and (orientation: landscape)):
(screen and (max-device-height: 414px) and (orientation: landscape)):
(.frame-container): On smaller iPhones, adding 1px prevents the navigation bars from appearing.
(@media screen and (min-device-width: 768px) and (max-device-width: 1024px)): Deleted.
(@media (min-device-height: 768px) and (max-device-height: 1024px)): Target iPad Airs and similar.
(@media screen and (min-device-width: 1024px) and (max-device-width: 1366px)): Deleted.
(@media screen and (max-device-width: 1024px) and (min-device-height: 1366px)): Target iPad Pro.
(#results footer): Add padding below the button for testing again.
* Animometer/tests/master/multiply.html: Remove the center text.
* Animometer/tests/master/resources/text.js: Update the test so that in every frame the text moves.
* Animometer/tests/master/text.html: Update the text sizing depending on the size of the device.
2016-04-08 Jon Lee <jonlee@apple.com>
Have Animometer benchmark always start with complexity of 1
https://bugs.webkit.org/show_bug.cgi?id=156432
Reviewed by Ryosuke Niwa.
* Animometer/tests/resources/main.js: Update the default Controller and RampController to
set its minimum complexities to 1 instead of 0.
2016-04-08 Jon Lee <jonlee@apple.com>
Fix SVG benchmark test
https://bugs.webkit.org/show_bug.cgi?id=156410
Reviewed by Dean Jackson.
* Animometer/resources/extensions.js: Update Point.zero to be a static Point.
* Animometer/tests/simple/resources/tiled-canvas-image.js:
(Stage.call._setupTiles): Refactor.
* Animometer/tests/master/resources/particles.js:
(Particle.prototype.reset): Use Point.center.
(complexity): We are not using a gradient background anymore, so remove the +1.
* Animometer/tests/master/resources/svg-particles.js: Update to use SVG transform
instead of CSS transform.
2016-04-06 Jon Lee <jonlee@apple.com>
Update master benchmark with SVG test
https://bugs.webkit.org/show_bug.cgi?id=156273
Reviewed by Dean Jackson.
Provisionally reviewed by Said Abou-Hallawa.
Switch masks tests for SVG path test.
* Animometer/resources/debug-runner/tests.js: Move mask test here.
* Animometer/resources/runner/tests.js: Add SVG test here.
* Animometer/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/master/particles.html.
* Animometer/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/dom-particles.js.
* Animometer/tests/master/resources/particles.js: Add minPosition for bounds checking. Prevents particle from being
partially obscured.
* Animometer/tests/master/resources/svg-particles.js: Added.
(Particle): The particle is either a path object or a rect using a path as a clip. The
same path is used either way. For each particle create a linear gradient with a random
rotation.
(SVGParticlesStage): Look in #shapes to see how many different kinds of paths are available.
This makes the test more generic in case other shapes need to be tested.
* Animometer/tests/master/svg-particles.html: Added. Have two defs, one that houses each
particle's gradient, and one that holds the shape templates.
2016-03-27 Hunseop Jeong <hs85.jeong@samsung.com>
[EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
https://bugs.webkit.org/show_bug.cgi?id=148470
Reviewed by Darin Adler.
* Skipped: Unskip the Bindings/event-target-wrapper test.
2016-03-23 Jon Lee <jonlee@apple.com>
Update focus and leaves tests
https://bugs.webkit.org/show_bug.cgi?id=155825
Reviewed by Simon Fraser.
Particles would improperly disappear, before they were fully off stage. Update the calculation.
* Animometer/tests/dom/resources/leaves.js:
* Animometer/tests/master/resources/leaves.js:
* Animometer/tests/master/focus.html: Update the center element styling.
* Animometer/tests/master/resources/focus.js:
(FocusElement.Utilities.createClass): Give enough space in the container for each particle for the blur
to spread. It should be about 3x more space than the blur radius on each side.
(Stage.call.initialize): Ditto for the center element.
2016-03-23 Jon Lee <jonlee@apple.com>
Update support for other platforms
https://bugs.webkit.org/show_bug.cgi?id=155824
Reviewed by Simon Fraser.
* Animometer/resources/debug-runner/animometer.css: Remove extraneous media query. All of it should
be handled in the release stylesheet.
* Animometer/resources/debug-runner/animometer.js: Add support for browsers that return an HTMLCollection
when retrieving radio elements with a name, instead of the selected value.
* Animometer/resources/runner/animometer.css: Adjust the queries for devices of varying widths.
(.frame-container): Move overflow:hidden to #stage.
* Animometer/tests/master/resources/stage.css: Consolidate into tests/resources/stage.css.
* Animometer/tests/resources/stage.css:
(body): Remove overflow:hidden.
(#stage): Set overflow:hidden here.
(#center-text): Moved from master/resources/stage.css.
Update stylesheet hrefs.
* Animometer/tests/master/canvas-stage.html:
* Animometer/tests/master/focus.html:
* Animometer/tests/master/leaves.html:
* Animometer/tests/master/multiply.html:
* Animometer/tests/master/particles.html:
* Animometer/tests/master/text.html: Adjust text size to fit in the device screen.
2016-03-23 Jon Lee <jonlee@apple.com>
Make the benchmark require device to be in landscape orientation
https://bugs.webkit.org/show_bug.cgi?id=155822
rdar://problem/25258650
Reviewed by Ryosuke Niwa.
Check that the device is in landscape orientation. If not, disable the button to start it,
and show a warning message.
* Animometer/developer.html: Add a message about how the browser should be set up. Include a
warning message that appears if the orientation is incorrect on mobile devices.
* Animometer/index.html: Ditto.
* Animometer/resources/debug-runner/animometer.css: Migrate the .hidden rule into the release
stylesheet. Update the style to accommodate the new UI.
* Animometer/resources/runner/animometer.css:
* Animometer/resources/runner/animometer.js:
(window.benchmarkController.initialize): Add the orientation listener is needed.
(window.benchmarkController.addOrientationListenerIfNecessary): Only mobile devices need this. Check
to see for support of window.orientation.
(window.benchmarkController._orientationChanged): Toggle the warning based on whether we match the
landscape query. Set a state variable, which is needed for the debug harness. Call updateStartButtonState.
(window.benchmarkController.updateStartButtonState):
* Animometer/resources/debug-runner/animometer.js: Change _updateStartButtonState to return
a boolean about whether at least one test is selected. That will be used in
benchmarkController.updateStartButtonState(). Move the load event listener to the release version.
(window.benchmarkController.updateStartButtonState): Override the release version, and also check
that at least one test is selected.
2016-03-22 Geoffrey Garen <ggaren@apple.com>
MallocBench: consolidate regression testing for aligned allocation
https://bugs.webkit.org/show_bug.cgi?id=155762
Reviewed by Michael Saboff.
* MallocBench/MallocBench.xcodeproj/project.pbxproj:
* MallocBench/MallocBench/Benchmark.cpp:
* MallocBench/MallocBench/memalign.cpp: Removed.
* MallocBench/MallocBench/memalign.h: Removed. The stress_aligned test
covers this and much more.
* MallocBench/MallocBench/stress_aligned.cpp:
(benchmark_stress_aligned): Include specific tests for extreme sizes
and alignments.
2016-03-21 Jon Lee <jonlee@apple.com>
Update benchmark tests
https://bugs.webkit.org/show_bug.cgi?id=155723
Reviewed by Darin Adler.
Provisionally reviewed by Said Abou-Hallawa.
Add quadratic and bezier segments to the canvas path test.
* Animometer/resources/runner/tests.js: Some of the query strings are unnecessary.
Rename the test.
* Animometer/tests/master/resources/canvas-stage.js:
(tune): Update to be able to take an array of possible constructors. Choose one randomly.
* Animometer/tests/master/resources/canvas-tests.js:
(CanvasLinePoint.Utilities.createClass): Move the point selection out to a separate
function called randomPoint() for reuse. Move X_LOOPS, Y_LOOPS, and offsets into the
class definition.
(randomPoint): Scale the grid down a little bit so that the lines along the edge of the
canvas are not cut off when the stroke size is thick.
(CanvasQuadraticSegment): Added.
(CanvasBezierSegment): Added.
(SimpleCanvasStage): Pass in an array of the different segment types. Since line segments
are short compared to the curved ones, make it twice as likely to render a line segment.
(SimpleCanvasStage.animate): Update the drawing code so that we render all line segments.
Add a helper method that selects a random element from an array.
* Animometer/tests/resources/main.js:
(Stage.randomElementInArray): Select a random element from the provided array.
* Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Refactor.
* Animometer/tests/dom/resources/leaves.js: Ditto.
* Animometer/tests/master/resources/dom-particles.js: Ditto.
* Animometer/tests/master/resources/image-data.js: Ditto.
* Animometer/tests/master/resources/leaves.js: Ditto.
* Animometer/tests/simple/resources/simple-canvas-paths.js: Ditto.
Add canvas tests that includes all stroke and fill paths. This makes it possible to avoid having to
include the full simple canvas suite for perf testing.
* Animometer/resources/debug-runner/tests.js: Add new tests. Move the canvas test into the Canvas
suite.
* Animometer/tests/simple/resources/simple-canvas-paths.js: Add a CanvasStroke and CanvasFill particle
that random selects an object to render.
* Animometer/resources/debug-runner/tests.js: Move 3D suite before basic canvas suite.
When updating the perf bot script, we will include the suites up to this one, but exclude
the basic canvas suite.
Move compositing transforms test to HTML suite and remove the empty Miscellaneous suite.
* Animometer/resources/debug-runner/tests.js:
* Animometer/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/misc/compositing-transforms.html.
* Animometer/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js.
Clean up miscellaneous test suite. Add a canvas ellipse test, and remove the other
canvas tests.
* Animometer/resources/debug-runner/tests.js: Add ellipse tests to the simple suite.
* Animometer/tests/misc/canvas-electrons.html: Removed.
* Animometer/tests/misc/canvas-stars.html: Removed.
* Animometer/tests/misc/resources/canvas-electrons.js: Removed.
* Animometer/tests/misc/resources/canvas-stars.js: Removed.
* Animometer/tests/simple/resources/simple-canvas-paths.js: Add ellipse primitives.
Merge text tests together into one.
* Animometer/resources/runner/tests.js: Remove international.html.
* Animometer/tests/master/international.html: Removed.
* Animometer/tests/master/resources/text.js:
(animate): Update styling. Manually calculate gradients for the shadow particles.
Reduce the step size for y direction to avoid cutting text off at the margins. Increase
step for x since there will be a little more room.
* Animometer/tests/master/text.html: Add more translations and lay it out in a table.
2016-03-20 Jon Lee <jonlee@apple.com>
Add a link to show debug data
https://bugs.webkit.org/show_bug.cgi?id=155724
Reviewed by Simon Fraser.
* Animometer/developer.html: Attach the onclick handler to the score.
* Animometer/index.html: Ditto.
2016-03-18 Dean Jackson <dino@apple.com>
Add a basic WebGL test to Animometer
https://bugs.webkit.org/show_bug.cgi?id=155475
<rdar://problem/25156860>
Reviewed by Simon Fraser and Jon Lee.
Add a pretty simple WebGL test to Animometer
which tries to draw a number of animated triangles.
The result still needs a bit of tuning.
* Animometer/resources/debug-runner/tests.js: Add a new
Suite for "3D" tests.
* Animometer/tests/3d/resources/webgl.js: Added.
* Animometer/tests/3d/webgl.html: Added.
2016-03-18 Jon Lee <jonlee@apple.com>
Add support for statically linking to a specific test
https://bugs.webkit.org/show_bug.cgi?id=155631
Rubber-stamped by Darin Adler.
* Animometer/developer.html: Update to call restartBenchmark instead so that it works for
both the preset and the manually set test sessions.
* Animometer/resources/debug-runner/animometer.css:
(.tree .link): Style the "link" UI.
* Animometer/resources/debug-runner/animometer.js: Move updateDisplay from suitesManager
to optionsManager since this is a visual option and has nothing to do with the suites
settings. Update the construction of the test UI by including a "link" after each test.
Clicking on that link brings up a JS prompt with a URL and a query string with the current
parameters of the controller, and selected test. Pasting this URL into the location bar will
automatically start running the selected test.
(suitesManager.suitesFromQueryString): Iterate through the Suites and tests and find the one
that matches the provided parameters. Returns an object similar to the form in
suitesManager.updateLocalStorageFromUI.
(benchmarkController.initialize): After settings up the events and options, try parsing the
query string and running the benchmark immediately. Otherwise, fall back to the form.
(benchmarkController.startBenchmark): Store the options and suites into member variables for
reuse in restartBenchmark.
(benchmarkController.startBenchmarkImmediatelyIfEncoded): Convert the query string to an object.
If that's successful, find the suite and test referenced in the query string. Start the benchmark if
the search for the test succeeded.
* Animometer/resources/extensions.js:
(Utilities.stripNonASCIICharacters): Helper method to convert the name of the suite and test
into a query-string-friendly version.
(Utilities.convertObjectToQueryString): Helper method to convert an object to query string
format.
(Utilities.convertQueryStringToObject): Helper method to convert query string into an object
with properties and values.
2016-03-16 Jon Lee <jonlee@apple.com>
Add a new benchmark test
https://bugs.webkit.org/show_bug.cgi?id=155570
Reviewed by Simon Fraser.
New Leaves test includes various image sizes and opacity.
* Animometer/resources/debug-runner/tests.js: Add it to the HTML test suite.
* Animometer/tests/dom/leaves.html: Added.
* Animometer/tests/dom/resources/leaves.js: Added. Override the
(Particle.call.reset): Uses a range of sizes, and opacity.
(Particle.call.animate): Opacity goes up then down. When it hits 0, reset the particle.
(Particle.call.move): Set transform and opacity.
* Animometer/tests/master/resources/leaves.js: Get rid of the closure so that it
can be used in this test. Update the relative path so that it works in both the master
and dom test suite.
2016-03-15 Simon Fraser <simon.fraser@apple.com>
Add developer Animometer test that bounces P3-tagged images
https://bugs.webkit.org/show_bug.cgi?id=155511
Reviewed by Tim Horton.
Add a test for rendering performance of tagged images. The 5 images are tagged
with the Display P3 colorspace.
* Animometer/resources/debug-runner/tests.js:
* Animometer/tests/bouncing-particles/bouncing-tagged-images.html: Added.
* Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Added.
* Animometer/tests/bouncing-particles/resources/image1.jpg: Added.
* Animometer/tests/bouncing-particles/resources/image2.jpg: Added.
* Animometer/tests/bouncing-particles/resources/image3.jpg: Added.
* Animometer/tests/bouncing-particles/resources/image4.jpg: Added.
* Animometer/tests/bouncing-particles/resources/image5.jpg: Added.
2016-03-09 Jon Lee <jonlee@apple.com>
Enhance existing Animometer tests
https://bugs.webkit.org/show_bug.cgi?id=155261
Reviewed by Simon Fraser.
* Animometer/tests/master/resources/canvas-tests.js: Add a gradient to
the filled circles. To expose more of the gradient, add another circle.
(SimpleCanvasStage.call.animate): For each frame, create a gradient with
undulating stop points and colors. Fill the circles twice; once with
the solid color, and once with the gradient.
* Animometer/tests/master/resources/dom-particles.js: Refactor the
emission variables into a separate stage for this test. Add a colorOffset
variable to make the colors of each particle slightly different, since
the ramp controller can add large numbers of particles all at once, which
would otherwise get all the same color.
* Animometer/tests/master/resources/particles.js:
(initialize): Remove the code specific to the SVG mask test.
* Animometer/tests/master/resources/image-data.js:
(initialize): Remove unused local variable.
* Animometer/tests/master/resources/multiply.js:
(initialize): Make the test harder by adding more total particles.
2016-03-09 Jon Lee <jonlee@apple.com>
Add text tests
https://bugs.webkit.org/show_bug.cgi?id=155257
Reviewed by Simon Fraser.
* Animometer/resources/extensions.js:
(UnitBezier.Utilities.createClass): Add a class that computes Bezier points
assuming that two of the control points are at (0,0) and (1,1). Taken from
WebCore/platform/graphics/UnitBezier.h
* Animometer/resources/runner/tests.js: Add a test for English text and one
for international text.
* Animometer/tests/master/international.html: Added.
* Animometer/tests/master/resources/text.js: Added. The test assumes there is
#template div which it will copy. The copies are placed behind the template, and
are set with different colors each frame. They are moved around with CSS transform.
* Animometer/tests/master/text.html: Added.
Remove the other text tests, since these ones cover the same techniques.
* Animometer/tests/text/layering-text.html: Removed.
* Animometer/tests/text/resources/layering-text.js: Removed.
* Animometer/tests/text/resources/text-boxes.js: Removed.
* Animometer/tests/text/text-boxes.html: Removed.
* Animometer/resources/debug-runner/tests.js:
2016-03-09 Jon Lee <jonlee@apple.com>
Add a new image test
https://bugs.webkit.org/show_bug.cgi?id=155232
Reviewed by Dean Jackson.
Provisionally reviewed by Said Abou-Hallawa.
The image test renders PNGs and moves them with translate and rotate
transforms. Each particle has a lifetime, and when the lifetime ends or
the particle goes offscreen, it resets itself somewhere on the stage.
* Animometer/resources/debug-runner/tests.js: Remove the CSS bouncing PNG
images test, because this one tests the same technique.
* Animometer/resources/runner/tests.js: Added here as "Leaves".
* Animometer/tests/master/leaves.html: Added.
* Animometer/tests/master/resources/particles.js: Refactor out the parts
specific to the DOM particles test. Consequently make velocity a public
member.
(initialize): The options parameter is never used, so remove it.
(animate): Remove unused local variable.
* Animometer/tests/master/resources/leaves.js: Maintains a focal point that
moves back and forth across the canvas. That point affects the velocity
of the particles. When the focal point is on the leftmost side, it is
between [-6, -2], and set in reset(). When the focal point is on the rightmost
side, it will be from [2, 6].
* Animometer/tests/master/resources/dom-particles.js: Move JS specific to
this test here from particles.js.
New images.
* Animometer/tests/master/resources/compass100.png: Added.
* Animometer/tests/master/resources/console100.png: Added.
* Animometer/tests/master/resources/contribute100.png: Added.
* Animometer/tests/master/resources/debugger100.png: Added.
* Animometer/tests/master/resources/inspector100.png: Added.
* Animometer/tests/master/resources/layout100.png: Added.
* Animometer/tests/master/resources/performance100.png: Added.
* Animometer/tests/master/resources/script100.png: Added.
* Animometer/tests/master/resources/shortcuts100.png: Added.
* Animometer/tests/master/resources/standards100.png: Added.
* Animometer/tests/master/resources/storage100.png: Added.
* Animometer/tests/master/resources/styles100.png: Added.
* Animometer/tests/master/resources/timeline100.png: Added.
2016-03-03 Jon Lee <jonlee@apple.com>
Add ability to retrieve raw data from release harness
https://bugs.webkit.org/show_bug.cgi?id=155026
Reviewed by Simon Fraser.
* Animometer/developer.html: Remove the special UI in the debug
harness.
* Animometer/resources/runner/animometer.css: Add styles for the
overlay.
* Animometer/resources/runner/animometer.js: Let 'j' show the JSON
results, but only if the overlay doesn't exist. Add 'esc' key to dismiss
the overlay.
(window.benchmarkController.selectResults): Cycle the cases around
so that the first 's' press selects both the benchmark score and
the individual test scores.
* Animometer/resources/debug-runner/animometer.css: Remove
unneeded rules.
* Animometer/resources/debug-runner/animometer.js: Make the same
call to handleKeyPress.
2016-03-03 Jon Lee <jonlee@apple.com>
Make sure multiply test particles have at least some opacity
https://bugs.webkit.org/show_bug.cgi?id=155027
Reviewed by Simon Fraser.
* Animometer/tests/master/resources/multiply.js:
(initialize): Have the elements spin a little faster to make it
more obvious when the system is being stressed.
(_addTile):
(animate): Make sure each element being animated has at least 1%
opacity.
2016-03-03 Jon Lee <jonlee@apple.com>
Update image test
https://bugs.webkit.org/show_bug.cgi?id=154962
Rubber-stamped by Darin Adler.
* Animometer/tests/master/image-data.html: Make each canvas have a compositing layer.
* Animometer/tests/master/resources/image-data.js:
(initialize): Update to load multiple images serially.
(_loadImage):
(tune): Use display instead of visibility. When showing an element anew, move it somewhere else.
(_createTestElement): Set up the element, refactor out placement of element to _refreshElement.
(_refreshElement): Place element in a tile grid.
(animate):
(_getRandomNeighboringPixelIndex): Use a more conservative distribution to make the effect last a little longer.
* Animometer/tests/master/resources/compass.svg: Added.
* Animometer/tests/master/resources/console.svg: Added.
* Animometer/tests/master/resources/contribute.svg: Added.
* Animometer/tests/master/resources/debugger.svg: Added.
* Animometer/tests/master/resources/inspector.svg: Added.
* Animometer/tests/master/resources/layout.svg: Added.
* Animometer/tests/master/resources/performance.svg: Added.
* Animometer/tests/master/resources/script.svg: Added.
* Animometer/tests/master/resources/shortcuts.svg: Added.
* Animometer/tests/master/resources/standards.svg: Added.
* Animometer/tests/master/resources/storage.svg: Added.
* Animometer/tests/master/resources/styles.svg: Added.
* Animometer/tests/master/resources/timeline.svg: Added.
2016-03-02 Jon Lee <jonlee@apple.com>
Add some new controllers, and refine tests
https://bugs.webkit.org/show_bug.cgi?id=154914
Reviewed by Simon Fraser.
Improve tests.
* Animometer/tests/master/focus.html: Move each particle into a layer. Put the particle
in a container element. Expand the container element by the max blur radius, and clip
overflow. This way, when the blur is applied, it avoids causing layer resizes.
* Animometer/tests/master/resources/focus.js:
(FocusElement.Utilities.createClass): Create a container element, and put the particle
inside.
(hide): Set display:none.
(show): Set display:block.
(animate): Apply filters to the container element.
(FocusStage.call.initialize): Instead of inserting and removing elements from the DOM,
keep them in the stage, but set the display style instead. Use this._offsetIndex to
keep track of which elements are displayed.
(FocusStage.call.animate): Move some calculations around to avoid doing unneeded math.
(FocusStage.call.getBlurValue): Make sure elements are always blurred.
(FocusStage.call.getOpacityValue): Make sure elements have some opacity.
* Animometer/tests/master/resources/multiply.js: Have the particles on the edge of the
stage appear less black when the complexity gets large enough.
(tune): Have this._distanceFactor calculate the factor. Avoid calculating square root each
frame.
2016-03-02 Jon Lee <jonlee@apple.com>
Add some new controllers, and refine tests
https://bugs.webkit.org/show_bug.cgi?id=154914
Reviewed by Simon Fraser.
Add a controller that centers around 30 fps instead of 60 fps.
* Animometer/developer.html: Add a new option.
* Animometer/resources/debug-runner/animometer.js:
* Animometer/resources/runner/animometer.js:
(this._processData.findRegression): When calculating the complexity-frameLength regression,
check the controller, and use a 30 fps baseline if needed.
* Animometer/resources/statistics.js:
(Regression.Utilities.createClass): Update to allow clients to specify the baseline
frame length.
* Animometer/tests/resources/main.js:
(tune): Override some of the constants in RampController. Move those constants out for
easier reading.
Add a fixed controller, with no step.
* Animometer/developer.html: Add a controller that takes no step.
* Animometer/resources/debug-runner/animometer.js:
* Animometer/tests/resources/main.js:
(Rotater.Utilities.createClass):
Switch to ramp controller as default.
* Animometer/developer.html: Increase the test length to 20 seconds.
* Animometer/resources/debug-runner/animometer.js: Rename the "adjustment" field to "controller"
since that is a more accurate description.
* Animometer/resources/debug-runner/graph.js:
* Animometer/resources/runner/animometer.js: Update preferences for release suite.
2016-02-26 Jon Lee <jonlee@apple.com>
Address Dean's comments in 154673.
* Animometer/developer.html:
* Animometer/resources/debug-runner/animometer.js:
* Animometer/resources/debug-runner/graph.js:
2016-02-25 Jon Lee <jonlee@apple.com>
Update animation benchmark and tests
https://bugs.webkit.org/show_bug.cgi?id=154673
Reviewed by Dean Jackson.
Update test visuals.
* Animometer/tests/master/resources/canvas-tests.js:
(CanvasLineSegment.Utilities.createClass): Line segments near the edge of the stage get clipped.
Update circle position and radius to minimize impact.
* Animometer/tests/master/resources/particles.js: Get rid of rotating gradient background, and
have 3 locations for emitting particles.
* Animometer/tests/master/resources/multiply.js: Update distance metric so that fringe tiles get
more color.
(initialize): Fix some of the math for laying out the tiles.
(animate): When a tile isn't used, set visibility: hidden.
2016-02-24 Jon Lee <jonlee@apple.com>
Update animation benchmark and tests
https://bugs.webkit.org/show_bug.cgi?id=154673
Reviewed by Dean Jackson.
Update the ramp controller.
The controller refines the complexity interval to test across.
* Animometer/resources/statistics.js: Add functions that estimate cumulative distribution function.
(Regression): For the flat regression, force the first segment to be at 60 fps.
(valueAt): Add convenience function to return interpolated value based on the regression used.
(_calculateRegression): Include the number of points included for both segments, and the piecewise
errors.
* Animometer/tests/resources/math.js: Make the Kalman estimator subclass Experiment, and allow it
to be reset.
* Animometer/tests/resources/main.js: Initialize the tier such that it starts at 10^0 = 1.
Increase the number of ramps. Maintain three FPS thresholds-- the frame rate of interest, a limit
on the lowest FPS we care to go for later interpolation, and a minimum FPS threshold we want to
aim for each ramp. Also keep three estimators: a running average of the change point, a minimum
boundary for each ramp, and an estimator for all the frames within an interval. The first two
are used to determine the parameters of the next ramp, and the latter allows us to refine the
parameters.
(update): During the tier phase, it is possible that the highest complexity possible for a test
won't stress the system enough to trigger stopping the tier phase and transitioning to the ramps.
If the complexity doesn't change when going to the next tier, we've maxed the test out, and move
on. When the tier phase completed, turn off Controller.frameLengthEstimator, which estimates the
FPS at each tier.
(tune): At each interval, look at the confidence distribution of being on the 60 FPS side or the
slow side. If the slowest FPS we achieve at the ramp's maximum complexity is not at least
_fpsRampSlowThreshold, then increase the maximum complexity. If we ever achieve 60 FPS, increase
the ramp's minimum complexity to that level. If, at an even lower complexity, a glitch causes the
FPS to drop, we reset the minimum complexity.
Have the bootstrap calculation occur between tests. Clean up harness.
* Animometer/resources/debug-runner/animometer.js: Run bootstrap after a test has
completed to avoid doing all of it at the end before showing the results. Clean up
parameters being passed around.
* Animometer/resources/debug-runner/tests.js:
(text):
* Animometer/resources/runner/animometer.js:
(this._processData.calculateScore): Save the results to the same object holding the data.
(this._processData._processData): In the case where a file is dragged, calculate the score
serially. Grab the results object and move it to the results variable and remove it from
the data object. This avoids serializing the results into the JSON.
(this._processData.findRegression): Include the samples used for bootstrapping. Reduce the
resample size to shorten the wait.
* Animometer/resources/runner/benchmark-runner.js:
* Animometer/resources/statistics.js:
(bootstrap): Update how bootstrapData is sorted. In some regression results the mix of
floats and integers causes an alphabetical sort to occur.
* Animometer/resources/strings.js:
Add meta charset so that encodings between harness and test match.
* Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-css-images.html:
* Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-svg-images.html:
* Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
* Animometer/tests/master/canvas-stage.html:
* Animometer/tests/master/focus.html:
* Animometer/tests/master/image-data.html:
* Animometer/tests/master/multiply.html:
* Animometer/tests/master/particles.html:
* Animometer/tests/misc/canvas-electrons.html:
* Animometer/tests/misc/canvas-stars.html:
* Animometer/tests/misc/compositing-transforms.html:
* Animometer/tests/simple/simple-canvas-paths.html:
* Animometer/tests/simple/tiled-canvas-image.html:
* Animometer/tests/template/template-canvas.html:
* Animometer/tests/template/template-css.html:
* Animometer/tests/template/template-svg.html:
* Animometer/tests/text/layering-text.html:
* Animometer/tests/text/text-boxes.html:
Update test harness reporting.
* Animometer/developer.html: Add missing meta charset.
* Animometer/index.html: Remove unnecessary utf-8 declaration.
* Animometer/resources/debug-runner/animometer.css: Add convenience classes for
formatting the results table.
* Animometer/resources/debug-runner/animometer.js: Adjust which stats are shown.
* Animometer/resources/debug-runner/tests.js: Display bootstrapping statistics.
* Animometer/resources/strings.js: Move strings not used by the release harness.
Switch to a pseudo-random number generator.
* Animometer/resources/statistics.js: Add a Pseudo class, with a simple
pseudo-random number generator.
(_calculateRegression): Reset the generator before running bootstrap.
(bootstrap): Deleted.
Replace Math.random with Pseudo.random.
* Animometer/tests/master/resources/canvas-tests.js:
* Animometer/tests/master/resources/focus.js:
* Animometer/tests/master/resources/particles.js:
* Animometer/tests/resources/main.js:
Use bootstrapping to get confidence interval in the breakpoint.
For the ramp controller, calculate the piecewise regression, and then use
bootstrapping in order to find the 95% confidence interval. Use the raw data.
* Animometer/developer.html: Default to the complexity graph. Add a legend
checkbox to toggle visibility of the bootstrap score and histogram.
* Animometer/resources/debug-runner/animometer.css: Make some more space to show
the old raw and average scores in the legend. Add new styles for the data.
* Animometer/resources/debug-runner/graph.js:
(_addRegressionLine): Allow passing an array for the variance bar tied to the
regression line. Now |stdev| is |range|.
(createComplexityGraph): Add bootstrap median, and overlay a histogram of
the bootstrap samples. Switch raw samples from circles to X's.
(onComplexityGraphOptionsChanged): Allow toggling of the bootstrap data.
(onGraphTypeChanged): Move the regressions for the raw and average samples to the
legend. In the subtitle use the bootstrap median, and include the 95% confidence
interval.
* Animometer/resources/runner/animometer.js:
(this._processData.findRegression): Factor out the code that determines which
samples to include when calculating the piecewise regression. For series that have
many samples, or a wider range of recorded complexities, throw away the 2.5%
lowest and highest samples before calculating the regression. Keep all samples
if the number of samples to regress is small or the range of complexities is
narrow.
(this._processData._calculateScore): Factor out regression calculation to
findRegression(). Bootstrap the change point of the regression. The score is the
median.
* Animometer/resources/statistics.js:
(_calculateRegression): Correct an issue in the calculation of the regression, where
the denominator can be 0.
(bootstrap): Template for bootstrapping. Create a bootstrap sample array, Create
re-samples by random selection with replacement. Return the 95% confidence samples,
the bootstrap median, mean, and the data itself.
* Animometer/resources/strings.js: Add bootstrap.
* Animometer/tests/resources/main.js:
(processSamples): Don't prematurely cut the sample data.
Fix graph drawing.
* Animometer/resources/debug-runner/animometer.js: Add spacing in the JSON output.
Multiple tests output a lot of JSON and can hang when selecting JSON with no whitespace.
* Animometer/resources/debug-runner/animometer.css:
(#complexity-graph .series.raw circle): Update the color.
* Animometer/resources/debug-runner/graph.js: Use the FPS axis instead of the
complexity axis, which can vary in domain. For determining the complexity domain,
only use samples after samplingTimeOffset.
Allow dropping results JSON.
* Animometer/developer.html: Add a button.
* Animometer/resources/debug-runner/animometer.css:
* Animometer/resources/debug-runner/animometer.js: Read the data and go straight
to the dashboard. With JSON output, write out only the options and the raw data.
Teach the harness to evaluate the samples and determine the test score.
This will allow us to update how the score is calculated separately from the samples recorded.
This also prepares the harness to be able to accept JSON of prior runs.
* Animometer/resources/strings.js: Clean up and remove unneeded strings and reduce some of the
hierarchy.
* Animometer/resources/debug-runner/tests.js: Update to use the new strings.
* Animometer/tests/resources/main.js: Allow all controllers to show a complexity-FPS graph.
(_processComplexitySamples): Factor out some of the sample processing done in the ramp
controller for the benefit of the other controllers. |complexitySamples| contains a list of
samples. Sort the samples by complexity. Optionally remove the top x% of samples.
Group them, and calculate distribution of samples within the same complexity, and add those as
new entries into |complexityAverageSamples|.
(Controller.processSamples): Move the code responsible for determining the complexity and FPS
scores out to ResultsDashboard. The structure of the data returned by the controller is:
{
controller: [time-regression, time-regression, ...], // optional, data specific to controller
marks: [...],
samples: { // all of the sample data
controller: [...],
complexity: [...], // processed from controller samples
complexityAverage: [...], // processed from complexity samples
}
}
(AdaptiveController.processSamples): Adding the target frame length is no longer necessary; we
now pass the test options to the graph.
(Regression): Move to statistics.js.
* Animometer/resources/statistics.js: Move Regression to here. Add a check if the sampling range
only contains one sample, since we cannot calculate a regression from one sample point.
Teach the test harness to evaluate the data.
* Animometer/resources/runner/animometer.js:
(ResultsDashboard): Store the options used to run the test and the computed results/score separately
from the data. The results are stored as:
{
score: /* geomean of iteration score */,
iterationsResults: [
{
score: /* geomean of tests */,
testsResults: {
suiteName: {
testName: {
controller: {
average:
concern:
stdev:
percent:
},
frameLength: { ... },
complexity: {
complexity:
stdev:
segment1:
segment2:
},
complexityAverage: { ... }
},
testName: { ... },
},
... next suite ...
}
},
{ ...next iteration... }
]
}
* Animometer/resources/debug-runner/animometer.js: Pass options around instead of relying
on what was selected in the form. This will later allow for dropping previous results, and
using those runs' options when calculating scores.
(ResultsTable._addGraphButton): Simplify button action by using attached test data.
* Animometer/resources/debug-runner/graph.js: Refactor to use the data.
Consolidate JS files, and move statistics out to a separate JS.
Preparation for having the Controller only handle recording and storage of the samples,
and leave the evaluation of the test score out to the harness. Move Experiment to
a new statistics.js, where Regression will also eventually go. Get rid of algorithm.js
and move it to utilities.js since the Heap is used only for Experiments.
* Animometer/tests/resources/algorithm.js: Removed. Heap is in utilities.js.
* Animometer/tests/resources/sampler.js: Removed. Experiment is in statistics.js,
Sampler in main.js.
* Animometer/tests/resources/main.js: Move Sampler here.
* Animometer/resources/statistics.js: Added. Move Statistics and Experiment here.
* Animometer/resources/extensions.js: Move Heap here. Attach static method to create
a max or min heap to Heap, instead of a new Algorithm object.
Update JS files.
* Animometer/developer.html:
* Animometer/index.html:
* Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-css-images.html:
* Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-svg-images.html:
* Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
* Animometer/tests/master/canvas-stage.html:
* Animometer/tests/master/focus.html:
* Animometer/tests/master/image-data.html:
* Animometer/tests/master/multiply.html:
* Animometer/tests/master/particles.html:
* Animometer/tests/misc/canvas-electrons.html:
* Animometer/tests/misc/canvas-stars.html:
* Animometer/tests/misc/compositing-transforms.html:
* Animometer/tests/simple/simple-canvas-paths.html:
* Animometer/tests/simple/tiled-canvas-image.html:
* Animometer/tests/template/template-canvas.html:
* Animometer/tests/template/template-css.html:
* Animometer/tests/template/template-svg.html:
* Animometer/tests/text/layering-text.html:
* Animometer/tests/text/text-boxes.html:
Fix the cursor in the graph analysis when the min
complexity is not 0.
* Animometer/resources/debug-runner/graph.js:
(_addRegression):
(createComplexityGraph):
2016-02-23 Geoffrey Garen <ggaren@apple.com>
Fix some issues in MallocBench
https://bugs.webkit.org/show_bug.cgi?id=154600
Reviewed by Oliver Hunt.
* MallocBench/MallocBench.xcodeproj/project.pbxproj: Make nimlang.ops
a part of the build so that it copies to the right place for execution.
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::Interpreter): Don't try to open .ops files for writing
because we're only going to read and we might need extra permissions to
write.
(Interpreter::~Interpreter): Give more context when opening a file fails
to help with debugging.
* MallocBench/MallocBench/stress.cpp:
(benchmark_stress): Reduce iterations to complete in less than 10 seconds.
2016-02-23 Michael Saboff <msaboff@apple.com>
Unreviewed change to revert extraneous changes made part of change set 196955.
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::doMallocOp):
(Interpreter::Thread::switchTo):
(writeData): Deleted.
2016-02-19 Michael Saboff <msaboff@apple.com>
MallocBench: Added recording for nimlang website, new recording details and added new options
https://bugs.webkit.org/show_bug.cgi?id=154485
Reviewed by Geoff Garen.
Added new capabilities to MallocBench. These include:
Added a recording of http://nim-lang.org/docs/lib.html.
Added thread id to the recording and the ability to playback switching threads in MallocBench
Added aligned allocations to recordings and the ability to playback
Added --use-thread-id option to honor recorded thread ids
Added --detailed-report to output remaining allocations by size after playback
Added --no-warmup to not run the warm up iteration
Changed the way that options are passed down to the benchmarks. Instead of passing individual
boolean or numeric option values, just pass a reference the CommandLine itself. Each benchmark
can access the options that are appropriate. The Benchmark class also uses the options for
is parallel, run counts and warm up.
Added thread id and aligned malloc to the Op by noticing that structure padding and Opcode allowed
for another 32 bits of data. Breaking that unused 32 bits into a 16 bit thread id value and a
16 bit log base 2 of the alignment for aligned malloc allowed for existing recordings to playback
without any incompatibilities.
Threaded operation is simulated by creating threads as needed. As long as the next Op's thread id
is the same as the last, operation continues as normal. When the next Op has a different thread id,
we switch to that thread using the shared Op stream to continue playing back. There is a mutex to
assure that only one thread is really running at a time and a condition variable used to wait
that the current thread id matches each block thread's thread id. This doesn't simulate true
concurrent threading, but is instead plays back Ops recorded for multiple thread faithfully.
* MallocBench/MallocBench.xcodeproj/project.pbxproj:
* MallocBench/MallocBench/Benchmark.cpp:
(deallocateHeap):
(Benchmark::Benchmark):
(Benchmark::runOnce):
(Benchmark::run):
* MallocBench/MallocBench/Benchmark.h:
(Benchmark::isValid):
* MallocBench/MallocBench/CommandLine.cpp:
(CommandLine::printUsage):
* MallocBench/MallocBench/CommandLine.h:
(CommandLine::isValid):
(CommandLine::benchmarkName):
(CommandLine::isParallel):
(CommandLine::useThreadID):
(CommandLine::detailedReport):
(CommandLine::warmUp):
(CommandLine::heapSize):
(CommandLine::runs):
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::Interpreter):
(Interpreter::run):
(Interpreter::readOps):
(Interpreter::doOnSameThread):
(Interpreter::switchToThread):
(Interpreter::detailedReport):
(compute2toPower):
(writeData):
(Interpreter::doMallocOp):
(Interpreter::Thread::Thread):
(Interpreter::Thread::stop):
(Interpreter::Thread::~Thread):
(Interpreter::Thread::runThread):
(Interpreter::Thread::waitToRun):
(Interpreter::Thread::switchTo):
* MallocBench/MallocBench/Interpreter.h:
(Interpreter::Thread::isMainThread):
* MallocBench/MallocBench/alloc_free.cpp: Added.
(benchmark_alloc_free):
* MallocBench/MallocBench/alloc_free.h: Added.
* MallocBench/MallocBench/balloon.cpp:
(benchmark_balloon):
* MallocBench/MallocBench/balloon.h:
* MallocBench/MallocBench/big.cpp:
(benchmark_big):
* MallocBench/MallocBench/big.h:
* MallocBench/MallocBench/churn.cpp:
(benchmark_churn):
* MallocBench/MallocBench/churn.h:
* MallocBench/MallocBench/facebook.cpp:
(benchmark_facebook):
* MallocBench/MallocBench/facebook.h:
* MallocBench/MallocBench/flickr.cpp:
(benchmark_flickr):
(benchmark_flickr_memory_warning):
* MallocBench/MallocBench/flickr.h:
* MallocBench/MallocBench/fragment.cpp:
(validate):
(benchmark_fragment):
(benchmark_fragment_iterate):
* MallocBench/MallocBench/fragment.h:
* MallocBench/MallocBench/list.cpp:
(benchmark_list_allocate):
(benchmark_list_traverse):
* MallocBench/MallocBench/list.h:
* MallocBench/MallocBench/main.cpp:
(main):
* MallocBench/MallocBench/medium.cpp:
(benchmark_medium):
* MallocBench/MallocBench/medium.h:
* MallocBench/MallocBench/memalign.cpp:
(test):
(benchmark_memalign):
* MallocBench/MallocBench/memalign.h:
* MallocBench/MallocBench/message.cpp:
(benchmark_message_one):
(benchmark_message_many):
* MallocBench/MallocBench/message.h:
* MallocBench/MallocBench/nimlang.cpp: Added.
(benchmark_nimlang):
* MallocBench/MallocBench/nimlang.h: Added.
* MallocBench/MallocBench/nimlang.ops: Added.
* MallocBench/MallocBench/realloc.cpp:
(benchmark_realloc):
* MallocBench/MallocBench/realloc.h:
* MallocBench/MallocBench/reddit.cpp:
(benchmark_reddit):
(benchmark_reddit_memory_warning):
* MallocBench/MallocBench/reddit.h:
* MallocBench/MallocBench/stress.cpp:
(deallocate):
(benchmark_stress):
* MallocBench/MallocBench/stress.h:
* MallocBench/MallocBench/stress_aligned.cpp:
(benchmark_stress_aligned):
* MallocBench/MallocBench/stress_aligned.h:
* MallocBench/MallocBench/theverge.cpp:
(benchmark_theverge):
(benchmark_theverge_memory_warning):
* MallocBench/MallocBench/theverge.h:
* MallocBench/MallocBench/tree.cpp:
(benchmark_tree_allocate):
(benchmark_tree_traverse):
(benchmark_tree_churn):
* MallocBench/MallocBench/tree.h:
* MallocBench/run-malloc-benchmarks:
2016-02-11 Jon Lee <jonlee@apple.com>
Fix a missing refactoring.
* Animometer/tests/master/resources/multiply.js:
(animate): Move to Utilities.lerp.
(_lerp): Deleted.
2016-02-10 Jon Lee <jonlee@apple.com>
Add new benchmark tests.
https://bugs.webkit.org/show_bug.cgi?id=154063
Provisionally reviewed by Said Abou-Hallawa.
Add tests for get/put image data, filters, opacity, and css transforms.
* Animometer/resources/runner/benchmark-runner.js:
(_runBenchmarkAndRecordResults): Update the body background color to match that of
the stage.
(this._runNextIteration): Clear the background color style for the results page.
* Animometer/resources/runner/tests.js:
* Animometer/tests/master/focus.html: Added.
* Animometer/tests/master/image-data.html: Added.
* Animometer/tests/master/multiply.html: Added.
* Animometer/tests/master/resources/focus.js: Added.
* Animometer/tests/master/resources/image-data.js: Added.
* Animometer/tests/master/resources/multiply.js: Added.
* Animometer/tests/master/resources/stage.css: Move common styles out.
* Animometer/tests/resources/main.js: Update Stage.randomBool to use Math.random.
Add Stage.randomSign for randomly setting a direction. Add the notion of the
current timestamp of the test to Benchmark, since some animations cycle through
colors and rely on an incremental counter like the time.
2016-02-09 Said Abou-Hallawa <sabouhallawa@apple.com>
Add internal benchmark tests for CSS mix-blend-modes and filters
https://bugs.webkit.org/show_bug.cgi?id=154058
Provisionally reviewed by Jon Lee.
* Animometer/resources/debug-runner/tests.js: Include the new tests in the
"HTML suite" of the debug runner.
* Animometer/resources/extensions.js:
(Utilities.browserPrefix):
(Utilities.setElementPrefixedProperty): Utility functions to allow setting
prefixed style properties.
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
Set the mix-blend-mode and the filter to some random values if the options
of the test requested that.
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
(parseShapeParameters): Parse the url options "blend" and "filter" and set
the corresponding flags.
* Animometer/tests/resources/main.js:
(randomStyleMixBlendMode):
(randomStyleFilter): Return random mix-blend-mode and filter.
2016-02-08 Jon Lee <jonlee@apple.com>
Add a ramp controller
https://bugs.webkit.org/show_bug.cgi?id=154028
Provisionally reviewed by Said Abou-Hallawa.
Enhance the graph to include a complexity-fps graph, in addition
to the time graph.
* Animometer/developer.html: Add a ramp option.
* Animometer/resources/debug-runner/animometer.css: Update the style.
* Animometer/resources/strings.js: Flatten the Strings.text constants.
* Animometer/resources/debug-runner/animometer.js:
(ResultsTable.call._addGraphButton): Refactor.
(ResultsTable.call._addTest): Add regression data.
(benchmarkController): Add a form that allows the user to switch between the two forms,
Add a form that allows the user to toggle different data. Hide certain header columns
depending on the selected controller.
* Animometer/resources/debug-runner/graph.js: Add the complexity regressions.
* Animometer/resources/debug-runner/tests.js: Add headers for the ramp results.
* Animometer/resources/runner/animometer.js:
(ResultsTable): If a header is disabled don't include them in _flattenedHeaders.
* Animometer/tests/resources/main.js:
(Controller): Allow options to specify the capacity for sample arrays.
(Regression): A piecewise regression that tries to fit a slope and a flat profile.
(_calculateRegression): Options can fix the slope and bias when calculating the minimal
error. Sweep across the samples in time (which could be backward depending on the controller)
and calculate the intersection point.
(RampController): This controller assumes that the target frame rate is below
58 FPS. It runs in two stages. The first stage quickly determines the order of
magnitude of objects needed to stress the system by the setting the complexity
to increasingly difficult tiers. Perform a series of ramps descending from a
high-water mark of complexity. The complexity needed to reach the target frame
length is done by performing a piecewise regression on each ramp, and track a
running average of these values. For the next ramp, make that running average
the center of the ramp. With a minimum complexity of 0, the high-water mark is
twice that average. The score is based on the highest complexity that can
reach 60 fps.
2016-02-08 Jon Lee <jonlee@apple.com>
Address Said's comments on the benchmark, and do some clean up.
* Animometer/developer.html:
* Animometer/resources/debug-runner/animometer.css: Add styles for averages.
* Animometer/resources/debug-runner/animometer.js: Use the right
Strings constants.
* Animometer/resources/debug-runner/graph.js:
(_addRegressionLine): Add missing code to draw the line and standard
deviation highlight.
(onGraphTypeChanged): Remove unneeded variables
(onTimeGraphOptionsChanged):
* Animometer/resources/runner/benchmark-runner.js:
(_runBenchmarkAndRecordResults): Rename samplers to suiteResults and
_suitesSamplers to _suitesResults.
* Animometer/tests/resources/main.js:
(results): Call processSamples().
(update): Change sampling timestamp comparison.
(_animateLoop): Move shouldStop call to before the update.
* Animometer/tests/resources/sampler.js:
(process): Rename to processSamples().
2016-02-07 Jon Lee <jonlee@apple.com>
Teach Controller to measure intervals, and turn off the frame length estimator.
* Animometer/tests/resources/main.js: Default interval length is 100 ms.
(start): Set the first interval.
(_measureAndResetInterval): Reports the average frame length of the interval that just
completed, and sets up the next interval.
(update): If there is no length, then just use the estimator per frame, otherwise the
estimator measures per interval. Add a didFinishInterval for subclasses to process
prior to recording the sample. Update tune() to include whether an interval had
finished.
(StepController): Step controllers don't measure on an interval basis.
2016-02-07 Jon Lee <jonlee@apple.com>
Minor refactoring. Rename Controller._estimator to Controller._frameLengthEstimator
and switch the parameters for start(), update(), and tune(), so that the timestamp
is first and stage is second.
* Animometer/tests/resources/main.js:
2016-02-07 Jon Lee <jonlee@apple.com>
Move ResultsTable functionality not needed for release tests out.
Move reporting of score and mean to selection of the time-based graph.
* Animometer/developer.html: Rename graph-options to time-graph-options.
* Animometer/resources/debug-runner/animometer.js:
(DeveloperResultsTable): Moved from runner/animometer.js. Switch from mean
values to "average" objects which can hold stdev. Move graph button and
calculation of noisy measurements here. Sophisticated header processing
is not needed in release suite.
(populateTable): Use DeveloperResultsTable.
* Animometer/resources/debug-runner/graph.js: Pull time graph creation to
its own function, and add a new onGraphTypeChanged handler in preparation
of a complexity graph to be added later.
* Animometer/resources/runner/animometer.js:
(ResultsTable): Simplify to just handle test names and scores.
2016-02-07 Jon Lee <jonlee@apple.com>
Tests: reuse objects already made.
Avoid thrash of object creation and removal by maintaining an index that
moves along the array as the adjust values change. If the tune value
requires more objects than the maximum size of the object array, then create
new objects. This means that the object array size never decreases.
* Animometer/tests/master/resources/canvas-stage.js: Maintain a separate
offsetIndex. For these tests, we want to avoid drawing the oldest objects,
so the scene will draw the object at offsetIndex to the end of the array.
(tune): Reverse the logic since "removal" of objects is much simpler and
involves simply changing the offsetIndex.
(animate): Update the for loop to draw from offsetIndex to the end.
(complexity): Update the definition.
* Animometer/tests/master/resources/canvas-tests.js: Maintain a separate
offsetIndex. For these tests, we want to avoid drawing the newest objects,
so the scene will draw the object at index 0 to the object at offsetIndex.
(SimpleCanvasStage.animate): Fly-by removal of local stage variable,
which is unneeded. Update the for loop to draw from offsetIndex to the end.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
(SimpleCanvasStage.animate): Update the for loop to draw from 0 to
offsetIndex.
* Animometer/tests/simple/resources/simple-canvas.js:
(tune): Update logic. Here, offsetIndex represents the boundary of the last
index to render.
(animate): Update the for loop to draw from 0 to offsetIndex.
(complexity): Update the definition.
2016-02-07 Jon Lee <jonlee@apple.com>
Tests: refactor and update styles.
* Animometer/tests/resources/main.js: Add helper methods that return
a color that hue rotates based on the date, and a counter value that
increases based on the date. Fix randomInt() to not bias against the min and
max values.
* Animometer/tests/master/resources/canvas-tests.js: Use new helper methods.
* Animometer/tests/master/resources/dom-particles.js: Ditto.
* Animometer/tests/master/resources/particles.js: Ditto.
* Animometer/tests/simple/resources/simple-canvas-paths.js: Refactor to
use a rotating color instead of a random color. The fast switching of color
is too vivid to watch.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
(BouncingSvgParticlesStage.call.createGradient): Fix the gradient so
that the last stop is located at the end.
2016-02-07 Jon Lee <jonlee@apple.com>
Refactor tune() to not return the complexity of the scene.
We have stage.complexity() now, so returning the complexity through tune
is unnecessary.
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
* Animometer/tests/master/resources/canvas-stage.js:
* Animometer/tests/master/resources/particles.js:
* Animometer/tests/misc/resources/canvas-electrons.js:
* Animometer/tests/misc/resources/canvas-stars.js:
* Animometer/tests/resources/main.js:
* Animometer/tests/simple/resources/simple-canvas.js:
* Animometer/tests/simple/resources/tiled-canvas-image.js:
* Animometer/tests/template/resources/template-canvas.js:
* Animometer/tests/template/resources/template-css.js:
* Animometer/tests/template/resources/template-svg.js:
* Animometer/tests/text/resources/layering-text.js:
2016-02-07 Jon Lee <jonlee@apple.com>
Make the fixed controller a step controller instead. Halfway through the test
it will bump up the complexity 4-fold. Calculate the step timestamp using options
instead of a separate parameter to the Controller constructor.
* Animometer/developer.html: Change value to "step"
* Animometer/resources/debug-runner/animometer.js:
(window.suitesManager.updateEditsElementsState): Show number inputs when set to "step".
* Animometer/tests/resources/main.js:
(update): Provide a hook for subclasses to tune.
(StepController): Maintain a flag determining whether we've stepped, and the time
we should step.
(Benchmark): Use the new StepController.
2016-02-07 Jon Lee <jonlee@apple.com>
Adjust the FPS graph scale.
Instead of making the FPS graph linearly scale, scale it based on the frame length,
but show the data in terms of FPS. Because it is inversely proportional, and most
of the data never gets below 20, concentrate the axis from 20-60 FPS, since otherwise
over half of the available graph space ends up blank.
This means we should convert all of the FPS data to frame length data.
* Animometer/resources/debug-runner/graph.js: Update the domain to be based on
frame length in milliseconds instead of FPS. Update the cursor to consider all of the
values being shown, and then pick the min and max values to represent the length of the
cursor.
* Animometer/resources/runner/animometer.js:
* Animometer/resources/strings.js:
* Animometer/tests/resources/main.js:
(processSamples): Add the ability to only sample a range of the data instead of everything
after an offset index. Update sampler to record the frame lengths instead of the frame
rate.
2016-02-07 Jon Lee <jonlee@apple.com>
Add option to use different methods for retrieving a timestamp.
* Animometer/developer.html: Add performance.now and Date.now options.
* Animometer/resources/runner/animometer.js: Default to performance.now.
(window.benchmarkController.startBenchmark):
* Animometer/tests/resources/main.js: Tie the desired method to _getTimestamp.
(run): Use _getTimestamp.
(_animateLoop): Ditto.
2016-02-07 Jon Lee <jonlee@apple.com>
Allow adding any number of markers to the graph. The markers can be labeled
and contain timestamp and sample index data. Make it a part of the controller
rather than keeping it in the sampler.
* Animometer/resources/debug-runner/animometer.css: Add styles for markers
* Animometer/resources/debug-runner/graph.js: Create the markers and add
text labels.
* Animometer/resources/runner/animometer.js: Assume the samplingTimeOffset
is just one of the marks provided.
* Animometer/resources/strings.js: Add Strings.json.marks.
* Animometer/tests/resources/main.js:
(Controller): Keep marks here. They are keyed by the marker name, so no two
markers should have the same name.
(recordFirstSample): Refactor to use mark.
(mark): Allows for arbitrary data if needed later. The timestamp maintained
is relative to the absolute start timestamp.
(containsMark): Checks whether a mark with a specific comment exists.
(processSamples): Removes the _startTimestamp offset from the marks before
setting it in results.
* Animometer/tests/resources/sampler.js: Remove marks.
2016-02-07 Jon Lee <jonlee@apple.com>
Get rid of options member variable in Benchmark.
Options are only needed when initializing the stage or benchmark, so there's no
need to also keep a reference to it.
* Animometer/tests/resources/main.js: Get rid of options variable in Benchmark.
Pass options to Controllers and Stages.
(Controller.Utilities.createClass):
(Benchmark.Utilities.createClass):
(get options): Deleted.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
* Animometer/tests/master/resources/canvas-stage.js:
* Animometer/tests/master/resources/canvas-tests.js:
* Animometer/tests/master/resources/particles.js:
* Animometer/tests/misc/resources/canvas-electrons.js:
* Animometer/tests/misc/resources/canvas-stars.js:
* Animometer/tests/misc/resources/compositing-transforms.js:
* Animometer/tests/simple/resources/simple-canvas-paths.js:
* Animometer/tests/simple/resources/tiled-canvas-image.js:
* Animometer/tests/template/resources/template-canvas.js:
* Animometer/tests/template/resources/template-css.js:
* Animometer/tests/template/resources/template-svg.js:
* Animometer/tests/text/resources/layering-text.js:
2016-02-07 Jon Lee <jonlee@apple.com>
Update how the benchmark is run
https://bugs.webkit.org/show_bug.cgi?id=153960
Provisionally reviewed by Said Abou-Hallawa.
Introduce the notion of a Controller. It is responsible for recording, updating,
and processing the statistics and complexity of the benchmark. This allows
plugging in different Controllers.
This strips most of the functionality from Animator and BenchmarkState, so fold
what's left into Benchmark. Now, Benchmarks only own a stage and a controller, but
are responsible for driving the animation loop.
Rewrite Animator._shouldRequestAnotherFrame into two different Controllers. One
maintains a fixed complexity, and the other adapts the complexity to meet a
fixed FPS.
Fix the Kalman estimator to be modeled on a scalar variable with no model.
* Animometer/tests/resources/main.js: Remove BenchmarkState and Animator, and
replace it with a Controller. Add a FixedController and refactor the previous controller
to an AdaptiveController.
(Controller): Controllers own the estimator and the sampler. When a new frame is
displayed, the animation loop calls update(). The estimator and sampler record
stats, then tune. Samplers can track multiple series of data. The basic controller
tracks timestamp, complexity, and estimated frame rate.
The Kalman estimation is based on the frame length rather than the frame
rate. Because FPS is inverse proportional to frame length, in the case where the measured
frame length is very small, the FPS ends up being a wildly large number (in the order of
600-1000 "FPS"), and it pulls the estimator up drastically enough that it takes a while
for it to settle back down. Using frame length reduces the impact of these spikes.
Converging the estimation takes enough time to avoid initializing it immediately
when the benchmark starts. Instead, the benchmark runs for a brief period of time (100ms)
before running it in earnest. Allow controllers an opportunity to set the complexity
before starting recording.
When the benchmark is complete, the controller has an opportunity to process
the samples. The default implementation calculates the raw FPS based on the time
difference of the samples, and calculates the complexity score. This is moved from
Benchmark.processSamples.
(Controller): Initialize timestamps. These are at first relative to the start of the
benchmark, but are offset by the absolute start time during start(). By default maintain
3 data series, but subclasses can override.
(start): Calls recordFirstSample() for subclasses to override if needed.
(recordFirstSample): For basic controller, start sampling at the beginning.
(update): Update the frame length estimator and sample.
(shouldStop): Checks that the time is before _endTimestamp.
(results): Returns the processed samples.
(processSamples): Iterate through the sample data and collate them. Include scores.
(FixedComplexityController): Controller that tunes the stage to the desired complexity
prior to starting, and keeps it at that complexity.
(AdaptiveController): Have the estimator estimate the interval frame rate instead of the
raw frame rate.
The previous version of this controller ignored the frame that came after the
adjustment. The raw FPS show that whatever noise the scene change adds is negligible
compared to the noise of the system overall. Stop ignoring that frame and include all
frames in the measurements.
(Benchmark): Remove dependency on animator, and instantiate a runner based on what is
selected. Most of the loop's functionality is in Controller, so remove here.
(Benchmark.run): Remove start() since it is only called from run(), and fold it in here.
(Benchmark._animateLoop): Fold in from Animator.animateLoop. Let the benchmark run for
a brief period before calling Controller.start().
* Animometer/tests/resources/math.js: Fix the Kalman estimator. The filter estimates
a scalar variable, and makes basic assumptions regarding the model. As a result
none of the linear algebra classes are needed, so remove Matrix, Vector3, and Matrix3.
(SimpleKalmanEstimator): Calculate the gain based on the provided process and
measurement errors.
(KalmanEstimator): Deleted.
(IdentityEstimator): Deleted.
(PIDController): Refactor to use the Utilities.createClass() helper.
The Kalman filter algorithm is explained here http://greg.czerniak.info/guides/kalman1/.
The state, represented by a scalar, is the estimated frame length. There is no user
transition of the state, and the state is the same as the measurement. With this model,
the estimation error converges, so calculate the gain ahead of time.
* Animometer/developer.html: Remove fixed-after-warmup since it is not useful.
Replace the option to toggle the estimator, and make it possible to customize the
estimator's error parameters. Show raw FPS by default, and remove interval FPS,
which will be shown instead of the filtered raw FPS.
* Animometer/resources/debug-runner/animometer.css: Put the header behind the graph.
Remove #intervalFPS rules; move the color to #filteredFPS.
* Animometer/resources/debug-runner/graph.js:
(updateGraphData): Update the hr style to force the layout to be calculated
correctly. Change the tick format to be in terms of seconds, since the timestamps
are in milliseconds. Remove interval data.
* Animometer/resources/runner/animometer.js:
(window.benchmarkController.startBenchmark): Set Kalman parameters.
* Animometer/resources/runner/benchmark-runner.js:
(_runBenchmarkAndRecordResults): When a benchmark completes, expect it to return
the final data, rather than passing a sampler from the controller. This avoids
needing to expose the sampler variable in the benchmark.
* Animometer/tests/resources/sampler.js:
(process): Move the setting of the target frame rate to AdaptiveController.
2016-02-06 Jon Lee <jonlee@apple.com>
Code clean up: Move Rotater function closer to Stage static methods.
The Rotater is used together with those methods; keep them close.
* Animometer/tests/resources/main.js:
2016-02-06 Jon Lee <jonlee@apple.com>
Update the JS includes due to ResultsTable move.
* Animometer/developer.html:
* Animometer/index.html:
2016-02-06 Jon Lee <jonlee@apple.com>
Move createElement and createSVGElement to Utilities.
* Animometer/resources/extensions.js:
(Utilities.createElement): Added.
(Utilities.createSVGElement): Added.
(DocumentExtension.createElement): Deleted.
(DocumentExtension.createSvgElement): Deleted.
* Animometer/resources/debug-runner/animometer.js:
* Animometer/resources/runner/animometer.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
2016-02-06 Jon Lee <jonlee@apple.com>
Add a convenience function for creating a class.
The pattern for creating a class is common enough to add as a Utilities
helper function. It also makes it easy to collapse class definitions when
editing.
* Animometer/resources/debug-runner/animometer.js: Move ProgressBar definition,
since it is only used here.
* Animometer/resources/runner/animometer.js: Move ResultsDashboard and
ResultsTable definition, since it is only used here.
* Animometer/resources/extensions.js: Move Utilities definition to the top. Convert
Point, Insets, SimplePromise.
(ProgressBar): Moved to animometer.js.
(ResultsDashboard): Moved to animometer.js.
(ResultsTable): Moved to animometer.js.
* Animometer/resources/runner/benchmark-runner.js: Convert BenchmarkRunnerState,
BenchmarkRunner.
* Animometer/tests/resources/main.js: Convert Rotater, Stage, Animator, Benchmark.
* Animometer/tests/resources/sampler.js: Convert Experiment, Sampler.
Convert test primitives.
* Animometer/tests/master/resources/canvas-tests.js: Convert CanvasLineSegment,
CanvasArc, CanvasLinePoint.
* Animometer/tests/simple/resources/simple-canvas-paths.js: Convert CanvasLineSegment,
CanvasLinePoint, CanvasQuadraticSegment, CanvasQuadraticPoint, CanvasBezierSegment,
CanvasBezierPoint, CanvasArcToSegment, CanvasArcToSegmentFill, CanvasArcSegment,
CanvasArcSegmentFill, CanvasRect, CanvasRectFill.
* Animometer/tests/simple/resources/tiled-canvas-image.js: Convert CanvasImageTile.
2016-02-06 Jon Lee <jonlee@apple.com>
Minor improvements to debug harness.
* Animometer/developer.html:
* Animometer/resources/debug-runner/animometer.css:
(#suites): Put the complexity text boxes closer to the test names.
(#options):
(#rawFPS circle): Make the interval FPS appear as a separate data series, with a line.
(#intervalFPS path):
(#intervalFPS circle):
* Animometer/resources/debug-runner/animometer.js:
(window.optionsManager.updateLocalStorageFromUI): Convert number inputs from text.
(window.suitesManager._onChangeTestCheckbox): Refactor to take a checkbox.
(window.suitesManager._createTestElement): Enhance such that typing into the complexity
input will automatically select that test for running.
(window.suitesManager.updateLocalStorageFromJSON): Make the harness work for private
browsing.
* Animometer/resources/debug-runner/graph.js: Separate the intervalFPS data, and show
more accuracy in timestamps.
2016-02-06 Jon Lee <jonlee@apple.com>
Refactor helper methods for getting random values for a stage.
Instead of requiring a Stage instance, just attach it to the Stage object.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
* Animometer/tests/master/resources/canvas-tests.js:
* Animometer/tests/master/resources/particles.js:
* Animometer/tests/misc/resources/canvas-electrons.js:
* Animometer/tests/misc/resources/canvas-stars.js:
* Animometer/tests/misc/resources/compositing-transforms.js:
* Animometer/tests/resources/main.js:
* Animometer/tests/simple/resources/simple-canvas-paths.js:
2016-02-05 Said Abou-Hallawa <sabouhallawa@apple.com>
Add a new graphics test for CanvasRenderingContext2D functions: getImageData and putImageData
https://bugs.webkit.org/show_bug.cgi?id=151716
Reviewed by Darin Adler.
The purpose of this test is to measure the performance of getImageData
and putImageData functions. This test draws a background on the canvas
and then gets some random tiles from this background and draw them in
destinations different from their original sources.
* Animometer/resources/debug-runner/tests.js: Adding the new test to the canvas simple tests suite.
* Animometer/resources/extensions.js:
(Array.prototype.shuffle): Shuffles the elements of an array.
(Point.zero): Returns a new Point object whose x and y are equal zero.
(Point.prototype.str): Used for debugging the Point object.
* Animometer/tests/simple/resources/tiled-canvas-image.js: Added.
(CanvasImageTile):
(CanvasImageTile.prototype.getImageData):
(CanvasImageTile.prototype.putImageData):
(Stage.call.initialize):
(Stage.call._createTiles):
(Stage.call._nextTilePosition):
(Stage.call.tune):
(Stage.call._drawBackground):
(Stage.call.animate):
(Stage.call.complexity):
(Stage.call):
* Animometer/tests/simple/tiled-canvas-image.html: Added.
2016-01-07 Jon Lee <jonlee@apple.com>
Fix new test.
* Animometer/resources/runner/tests.js: Wrong URL from an
old patch.
* Animometer/tests/master/particles.html:
* Animometer/tests/master/resources/dom-particles.js:
(Particle.call.reset): Figured out a simpler way to set up
the particles.
(this.move.reset): Deleted.
(this.move._applyAttributes): Deleted.
* Animometer/tests/master/resources/particles.js:
(Particle): Call move() after reset().
2016-01-07 Jon Lee <jonlee@apple.com>
Update benchmark test suite
https://bugs.webkit.org/show_bug.cgi?id=152679
Reviewed by Simon Fraser.
Add a new test. The test has a rotating background
gradient, and does a better job physically simulating
particles.
* Animometer/resources/extensions.js: Teach Point to take constants as well as other Points.
(Point.prototype.length): Added.
(Point.prototype.normalize): Added.
* Animometer/resources/runner/tests.js: Add the test to the master suite.
* Animometer/tests/master/particles.html: Added.
* Animometer/tests/master/resources/particles.js: Added. Parent class for different kinds of particles.
(Particle):
(Particle.prototype.reset): If the particle starts slowing down in terms of its animation,
reset it.
(Particle.prototype.animate): Bounce off the walls elastically, and include gravity.
(Particle.prototype.move): Subclasses should override.
(ParticlesStage): Stage includes a rotating gradient background.
* Animometer/tests/master/resources/dom-particles.js: Added. Creates a <div> and adds it to
the stage.
* Animometer/tests/resources/star.svg: Added.
2016-01-03 Jon Lee <jonlee@apple.com>
Update benchmark test suite
https://bugs.webkit.org/show_bug.cgi?id=152679
Reviewed by Simon Fraser.
Move algorithm.js and sampler.js to tests/ and benchmark-runner.js to runner/.
Needed by both harnesses.
* Animometer/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/benchmark-runner.js.
* Animometer/developer.html:
* Animometer/index.html:
Needed only by the tests. Move to tests/. Statistics, in sampler.js, is used by ResultsDashboard, so move that
into extensions.js.
* Animometer/resources/extensions.js:
* Animometer/tests/resources/algorithm.js: Renamed from PerformanceTests/Animometer/resources/algorithm.js.
* Animometer/tests/resources/sampler.js: Renamed from PerformanceTests/Animometer/resources/sampler.js.
* Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-css-images.html:
* Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-svg-images.html:
* Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
* Animometer/tests/master/canvas-stage.html:
* Animometer/tests/misc/canvas-electrons.html:
* Animometer/tests/misc/canvas-stars.html:
* Animometer/tests/misc/compositing-transforms.html:
* Animometer/tests/simple/simple-canvas-paths.html:
* Animometer/tests/template/template-canvas.html:
* Animometer/tests/template/template-css.html:
* Animometer/tests/template/template-svg.html:
* Animometer/tests/text/layering-text.html:
* Animometer/tests/text/text-boxes.html:
2016-01-07 Jon Lee <jonlee@apple.com>
Update benchmark test suite
https://bugs.webkit.org/show_bug.cgi?id=152679
Reviewed by Simon Fraser.
Fix tests for other browsers.
* Animometer/resources/extensions.js:
(Point.elementClientSize): Some browsers return 0 for SVG clientWidth and clientHeight.
Use getBoundingClientRect() instead.
* Animometer/tests/misc/resources/canvas-electrons.js:
(CanvasElectron.prototype._draw): Some browsers don't support ellipse.
2016-01-07 Jon Lee <jonlee@apple.com>
Add a waitUntilReady() step
https://bugs.webkit.org/show_bug.cgi?id=152862
Reviewed by Simon Fraser.
Add a waitUntilReady() callback that lets the benchmark complete
its setup before running the benchmark.
* Animometer/tests/resources/main.js:
(Benchmark.prototype.run): First call waitUntilReady, which returns
a promise. When the promise resolves, run everything that was in this
function.
(Benchmark.prototype.waitUntilReady): Default implementation returns
a resolved promise.
(Benchmark.prototype.resolveWhenFinished): Deleted.
* Animometer/tests/template/resources/template-canvas.js:
(new.TemplateCanvasStage.waitUntilReady): Example on how to override.
2016-01-03 Jon Lee <jonlee@apple.com>
Update data reporting and analysis
https://bugs.webkit.org/show_bug.cgi?id=152670
Reviewed by Simon Fraser.
Show new graph data. Provide controls to show different series data. Provide an
interactive cursor that shows the data at a given sample.
* Animometer/developer.html: Add a nav section in #results. Each part of the graph
has a checkbox for visual toggling, as well as companion spans to contain the data.
The numbers will always be shown even if the SVG isn't.
* Animometer/resources/debug-runner/animometer.css:
(#suites): Adjust spacing when doing fixed complexity.
(#test-graph nav): Place the nav in the upper right corner.
(#test-graph-data > svg): Fix the FPS scale from 0-60. It makes the raw FPS goes past
that scale. Allow it to show.
(.target-fps): Add a dotted line for where the benchmark is supposed to settle for FPS.
(#cursor line): The cursor contains a line and highlight circles for the data being shown.
(#cursor circle):
(#complexity path): This and rules afterward are named by series type.
(#complexity circle):
(#filteredFPS path):
(#filteredFPS circle):
(#rawFPS path):
(#intervalFPS circle):
(.left-samples): Deleted.
(.right-samples): Deleted.
* Animometer/resources/debug-runner/animometer.js:
(initialize): Add a "changed" listener when the checkboxes change in the nav.
(onBenchmarkOptionsChanged): Renamed.
(showTestGraph): All graph data is passed in as graphData instead of as arguments.
* Animometer/resources/debug-runner/graph.js: Extend BenchmarkController. When showing
a new graph, call updateGraphData(). It creates all of the d3 graphs. onGraphOptionsChanged()
toggles the data on and off.
(updateGraphData): Add the axes. Add the average lines and markers for sample time and
target FPS. Add the cursor group. Use helper function addData() to add the data. On top of
everything add a transparent area which will catch all of the mouse events. When the mouse
moves in the graph, find the closest data point, show the data in the nav area, and highlight
the data points.
(addData): Adds a line and circle for each data point. Also adds a highlight cursor with a
size a little larger than the circle radius for the data points.
(onGraphOptionsChanged): Called when data is visually toggled.
(showOrHideNodes): Helper function to toggle the .hidden class.
* Animometer/resources/extensions.js:
(ResultsDashboard.prototype.get data): Get rid of the arguments for _processData.
(ResultsTable.prototype._addGraphButton): Shove all of the graph data into a singular object.
Producing the JSON can take a while with all of the data. Make it on-demand with a
button.
* Animometer/resources/debug-runner/animometer.js:
(showResults): When showing the results, don't serialize the JSON data. Move that to...
(showJSONResults): ...here. Remove the button.
* Animometer/developer.html: Add a button. The button will remove itself and populate
the textarea with the JSON data.
* Animometer/resources/debug-runner/animometer.css:
(.hidden): Add a universal hidden class.
(#results button.small-button): Promote the small-button styles to the whole results
section for use in the JSON button.
(#results button.small-button:active):
(#results-data button.small-button): Deleted.
(#results-data button.small-button:active): Deleted.
Refactor how Animator does its recording.
* Animometer/tests/resources/math.js: Create a new, simple estimator that just returns
the same interval frame rate for adjustment.
* Animometer/tests/resources/main.js:
(Animator): Remove _dropFrameCount, and make variables more accurate described.
(Animator.prototype.initialize): Use the identity estimator instead of using a bool.
(Animator.prototype._intervalTimeDelta): Rename, only used internally.
(Animator.prototype._shouldRequestAnotherFrame): Assume we drop one frame for adjustment
of the scene. If we are within the number of frames to measure for the interval, just
record the timestamp. Otherwise we are ready to evaluate and adjust the scene. Record
the interval frame rate and the estimator's frame rate.
Avoid processing the data through the Experiment while the test is running. Reconfigure
the sampler to just record the raw samples. After the test is done, run the samples through
the Experiment to get the score.
* Animometer/resources/sampler.js:
(Experiment): Fold _init() into the constructor since nobody else will call it. This is not
needed until the test concludes, so remove startSampling(). Clients should just call sample().
(Sampler): Pre-allocate arrays given the number of data points being recorded, and a capacity
of how many samples will be used. The processor is a called when it's time to process the data
since that is the client also telling the Sampler what to record.
Introduce the notion of marks as well, which allows the client to mark when an
event occurs. When we mark sample start, we can attach the timestamp there, instead of storing
it separately.
(Sampler.prototype.startSampling): Deleted. Clients should just call record().
(Sampler.prototype.record): The data to record is passed in as variable arguments.
(Sampler.prototype.mark): When adding a mark, a client needs to provide a unique string, and
can provide extra data object for later retrieval.
(Sampler.prototype.process): Renamed from toJSON. Trim the sampling arrays to what was used.
Call the processor to process the samples.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunner.prototype._runBenchmarkAndRecordResults): Call process().
* Animometer/resources/strings.js: Add some new strings, remove the graph ones since they are
not used.
* Animometer/tests/resources/main.js:
(Benchmark): Create a sampler with 4 series. The maximum number of points expected is the
number of seconds multiplied by 60 fps. Benchmark, as a client of the Sampler, knows about all
of the data being added to the Sampler. It is added through record(), and processed through
processSamples().
(Benchmark.prototype.update): Mark when we've passed warmup and are starting to sample. Include
the timestamp in the custom data for the mark. This avoids the need to store is separately in
the Sampler. Fold what was in record() here, since nothing else needs this functionality.
record() now just relays the information to the sampler.
(Benchmark.prototype.record): Called by Animator, which provides the data to the sampler.
Animator's calls to this is part of a later patch. Requires each stage to return its complexity.
(Benchmark.prototype.processSamples): If the sampling mark exists, add it to the results.
Go through all of the samples. All samples contain a timestamp and complexity. We
calculate "raw FPS" which is the time differential from the previous sample. At regular intervals
the Kalman-filtered FPS and the interval average FPS are also recorded. We also create two
experiments, to get the scores for the complexity and smoothed FPS, and add those samples to
the experiments. Grab those scores and add them into results also.
Add complexity() to the tests for Benchmark.record().
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
* Animometer/tests/misc/resources/canvas-electrons.js:
* Animometer/tests/misc/resources/canvas-stars.js:
* Animometer/tests/text/resources/layering-text.js:
2015-12-27 Jon Lee <jonlee@apple.com>
Simplify the test harness
https://bugs.webkit.org/show_bug.cgi?id=152562
Reviewed by Simon Fraser.
Update the simple canvas tests. For the paths, start from the center instead of the
top-left corner. Instead of using a coordinate limit, use a canonized factor, and
use that along both the x and y axes, so that more capable tests use more of the
canvas.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
(CanvasLinePoint): Rewrite to use the coordinate maximum factor.
(CanvasQuadraticPoint): Ditto.
(CanvasBezierPoint): Ditto.
* Animometer/tests/simple/resources/simple-canvas.js:
(tune): Calculate a factor instead of a maximum coordinate.
2015-12-27 Jon Lee <jonlee@apple.com>
Simplify the test harness
https://bugs.webkit.org/show_bug.cgi?id=152562
Reviewed by Simon Fraser.
All of the benchmarks use the default Animator(). Don't require new tests
to pass a new instance, and instead just make one in the Benchmark constructor.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
* Animometer/tests/master/resources/canvas-tests.js:
* Animometer/tests/misc/resources/canvas-electrons.js:
* Animometer/tests/misc/resources/canvas-stars.js:
* Animometer/tests/misc/resources/compositing-transforms.js:
* Animometer/tests/resources/main.js:
* Animometer/tests/simple/resources/simple-canvas-paths.js:
* Animometer/tests/template/resources/template-canvas.js:
* Animometer/tests/template/resources/template-css.js:
* Animometer/tests/template/resources/template-svg.js:
* Animometer/tests/text/resources/layering-text.js:
* Animometer/tests/text/resources/text-boxes.js:
Refactor the template.
* Animometer/tests/template/resources/template-canvas.js:
* Animometer/tests/template/resources/template-css.js:
* Animometer/tests/template/resources/template-svg.js:
* Animometer/tests/template/template-canvas.html:
* Animometer/tests/template/template-css.html:
* Animometer/tests/template/template-svg.html:
Refactor the SVG suite.
* Animometer/tests/bouncing-particles/bouncing-svg-images.html: Move scripts to the end.
* Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto.
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Remove extraneous includes
to stage.js.
* Animometer/tests/text/text-boxes.html: Ditto.
BouncingCanvasParticlesBenchmark is not necessary. Use Benchmark directly when subclassing.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Remove
BouncingCanvasParticlesBenchmark.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Use Benchmark.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Ditto.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js: Require the shape
in the constructor instead of having subclasses set the private variable.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: Refactor.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
Refactor the HTML suite.
Move scripts to the end.
* Animometer/tests/bouncing-particles/bouncing-css-images.html:
* Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
* Animometer/tests/text/layering-text.html:
* Animometer/tests/text/text-boxes.html:
Refactor to use the new variables.
* Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
* Animometer/tests/text/resources/layering-text.js:
* Animometer/tests/text/resources/text-boxes.js:
Refactor the bouncing canvas tests.
* Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Move scripts to the end.
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Move scripts to the end.
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js: Promote a few
properties to "public" since they are used by subclasses.
(BouncingParticlesStage): Fix the constructor, which was missing "this". Make particles
"public" for subclasses.
(BouncingParticlesStage.initialize): Fix the max velocity, which was accidentally changed.
* Animometer/tests/misc/resources/compositing-transforms.js: Refactor.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
BouncingCanvasParticlesAnimator is no longer needed.
(BouncingCanvasParticle): Change constructor to take a shape as a parameter instead of
having subclasses set the variable.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Refactor.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Refactor.
Move example/ files into misc/.
* Animometer/tests/misc/canvas-electrons.html: Renamed from PerformanceTests/Animometer/tests/examples/canvas-electrons.html.
* Animometer/tests/misc/canvas-stars.html: Renamed from PerformanceTests/Animometer/tests/examples/canvas-stars.html.
* Animometer/tests/misc/resources/canvas-electrons.js: Renamed from PerformanceTests/Animometer/tests/examples/resources/canvas-electrons.js.
* Animometer/tests/misc/resources/canvas-stars.js: Renamed from PerformanceTests/Animometer/tests/examples/resources/canvas-stars.js.
* Animometer/resources/debug-runner/tests.js: Update test URLs.
Refactor miscellaneous suite.
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
Remove BouncingParticlesAnimator and BouncingParticleBenchmark, which are
not needed.
(tune): Remove console assert.
* Animometer/tests/resources/main.js: Add Rotater back in from stage.js.
* Animometer/tests/examples/resources/canvas-electrons.js: Remove CanvasElectronsAnimator.
* Animometer/tests/examples/resources/canvas-stars.js: Remove CanvasStarsAnimator.
* Animometer/tests/misc/resources/compositing-transforms.js:
* Animometer/tests/examples/canvas-electrons.html: Move scripts to the end.
* Animometer/tests/examples/canvas-stars.html: Ditto.
* Animometer/tests/misc/compositing-transforms.html: Ditto.
Refactor the simple suite.
* Animometer/tests/master/resources/canvas-stage.js:
(tune): Remove coordinateMaximum since it is not needed in any
of the master tests.
* Animometer/tests/simple/resources/simple-canvas.js:
SimpleCanvasAnimator and SimpleCanvasBenchmark are no longer
needed.
(tune): Manage the objects differently, but instead of duplicating
all of SimpleCanvasStage here, just replace tune(). Include
coordinateMaximum, and remove items from the end of the list
instead of the beginning.
(StageBenchmark.call.createAnimator): Deleted.
(StageBenchmark.call): Deleted.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
* Animometer/tests/simple/simple-canvas-paths.html: Move
scripts to the end.
Get rid of stage.js, StageAnimator, and StageBenchmark. Don't have the progress bar update during the test.
* Animometer/resources/debug-runner/animometer.js:
(initialize): Move the setting of testsCount to the debug runner.
(didRunTest): Nicer name.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunner.prototype._runBenchmarkAndRecordResults): Don't pass in the progress bar to benchmarks.
* Animometer/resources/extensions.js:
(ProgressBar): Refactor. Make variables "private". Resetting the progress when instantiating.
(ProgressBar.prototype.incrementRange): This is called every time a benchmark completes.
* Animometer/resources/runner/animometer.js:
(window.benchmarkRunnerClient.initialize): Remove unneeded setting of testsCount.
* Animometer/resources/strings.js: These are no longer needed.
* Animometer/tests/master/canvas-stage.html: Remove script inclusion. Other tests will follow.
* Animometer/tests/master/resources/canvas-tests.js: Use Benchmark instead of StageBenchmark.
* Animometer/tests/resources/main.js: Messages are no longer needed
(Animator.prototype._shouldRequestAnotherFrame): Rename from animate(), since this method returns a boolean
indicating whether another frame should be requested. Collapse the logic from StageAnimator into animateLoop.
(BenchmarkState.prototype.currentStage): Deleted.
(BenchmarkState.prototype.currentMessage): Deleted.
(BenchmarkState.prototype.currentProgress): Deleted.
(Animator.prototype.animate): Deleted.
(Animator.prototype.animateLoop): The stage is animated only when we have another frame to draw.
(Benchmark.prototype.record): No need to update the progress bar.
* Animometer/tests/resources/stage.js: Removed. Rotater will appear in a later patch, in main.js.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunner.prototype._runBenchmarkAndRecordResults): Each test is run as a benchmark.
Remove the call to runBenchmark by merging the options here, and calling benchmark.run()
directly.
Make the class relationships more easily understandable. The benchmark owns the stage,
animator, and options. Make the stage and animator no longer have their own references to
the options. Make Stage a first-class citizen by promoting it to main.js. Later patches
will try to get rid of stage.js altogether.
* Animometer/tests/resources/main.js:
(Stage): Moved from stage.js.
(Animator): Don't pass in benchmark and options in its constructor. It will get initialized
by benchmark-related parameters in initialize().
(Animator.prototype.initialize): Add a back-reference to benchmark and cache an option.
(Animator.prototype.get benchmark):
(Animator.prototype.animate): Refactor to use the cached option, to remove its dependency on
the options dictionary.
(Benchmark): Require all benchmarks to have a stage and animator. The instance will initialize
them.
(Benchmark.prototype.get options):
(Benchmark.prototype.get stage): BenchmarkStates.stages will need to be renamed to avoid confusion.
(Benchmark.prototype.get animator):
(Benchmark.prototype.start):
(Benchmark.prototype.update): Ask the stage directly to tune or clear instead of adding another
level of indirection.
(window.runBenchmark): Deleted. Remove the need for a benchmarkClient. Also remove the standalone
path, since tests can be individually selected, and remove the need for runBenchmark since that is
handled in BenchmarkRunner._runBenchmarkAndRecordResults.
* Animometer/tests/resources/stage.js:
(Stage): Deleted. Moved to main.js.
(StageBenchmark): What's left is updating the progress bar; to be removed.
(StageAnimator): What's left can be folded in Animator.
Refactor master suite.
* Animometer/tests/master/resources/canvas-stage.js: This now only has SimpleCanvasStage.
(animate): Push the clearRect() into each stage.
(complexity):
(StageBenchmark.call.createAnimator): Deleted.
(StageBenchmark.call): Deleted.
* Animometer/tests/master/resources/canvas-tests.js: SimpleCanvasPathStrokeStage is no longer needed.
(CanvasLineSegment.prototype.draw):
(CanvasArc):
(CanvasLinePoint): Remove the draw call because depending on its index it either needs to be moveTo
or lineTo, and it is otherwise a very small draw operation that doesn't need the overhead of the
function call. Do all of the drawing through the stage.
Refactor the subclass pattern. Introduce Utilities.createSubclass().
* Animometer/resources/debug-runner/benchmark-runner.js:
* Animometer/resources/extensions.js:
(window.Utilities.createSubclass): Takes the super class, a function representing
the class's constructor, and additional methods to attach to the new class's
prototype object.
* Animometer/tests/text/text-boxes.html: Remove unneeded reference to utilities.js.
Refactor tests.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
* Animometer/tests/examples/resources/canvas-electrons.js:
* Animometer/tests/examples/resources/canvas-stars.js:
* Animometer/tests/master/resources/canvas-stage.js:
* Animometer/tests/master/resources/canvas-tests.js:
* Animometer/tests/misc/resources/compositing-transforms.js:
* Animometer/tests/resources/stage.js:
* Animometer/tests/simple/resources/simple-canvas-paths.js:
* Animometer/tests/simple/resources/simple-canvas.js:
* Animometer/tests/template/resources/template-canvas.js:
* Animometer/tests/template/resources/template-css.js:
* Animometer/tests/template/resources/template-svg.js:
* Animometer/tests/text/resources/layering-text.js: Reorder some of the methods
and properties since they rely on each other.
* Animometer/tests/text/resources/text-boxes.js:
* Animometer/resources/debug-runner/animometer.js: Arrange calls
in the order they are evoked.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunnerState.prototype.next): Get rid of return value since
no caller to next() uses it.
(BenchmarkRunnerState.prototype.prepareCurrentTest): Refactor the
promise to resolve simply when onload() is called instead of
looking for #stage.
(BenchmarkRunner.prototype._runTestAndRecordResults): Suite.run
simply calls runBenchmark(). Call it directly rather than through
the Suite.
(BenchmarkRunner.prototype.step): Remove unused parameter in
resolve callback.
(BenchmarkRunner.prototype.runMultipleIterations): Use this instead
of self since it is outside of the closure which needed the self
variable.
(resolveIfReady): Deleted.
(BenchmarkRunner.prototype.waitForElement): Deleted.
* Animometer/resources/runner/tests.js: prepare() and run() are
no longer needed.
(Suite.prototype.prepare): Deleted.
(Suite.prototype.run): Deleted.
* Animometer/tests/master/canvas-stage.html: Move all scripts to
the end of the page.
2015-12-23 Simon Fraser <simon.fraser@apple.com>
Add an Animometer developer test which animates text-rich boxes
https://bugs.webkit.org/show_bug.cgi?id=152544
Reviewed by Zalan Bujtas.
Add a test that draws lots of international text. This is a particle test,
moving the boxes around with absolution positioning.
* Animometer/resources/debug-runner/tests.js:
* Animometer/tests/text/resources/text-boxes.js: Added.
(BouncingTextBox):
(BouncingTextBox.prototype._move):
(BouncingTextBox.prototype.animate):
(BouncingTextBoxStage):
(BouncingTextBoxStage.prototype.createParticle):
(BouncingTextBoxStage.prototype.particleWillBeRemoved):
(BouncingTextBoxsBenchmark):
(BouncingTextBoxsBenchmark.prototype.createStage):
(window.benchmarkClient.create):
* Animometer/tests/text/text-boxes.html: Added.
2015-12-23 Jon Lee <jonlee@apple.com>
Split benchmark into two different pages
https://bugs.webkit.org/show_bug.cgi?id=152458
Reviewed by Simon Fraser.
Add tests to 'animometer' suite.
* Animometer/resources/runner/tests.js:
* Animometer/tests/master/canvas-stage.html: Added.
* Animometer/tests/master/resources/canvas-stage.js: Added.
* Animometer/tests/master/resources/canvas-tests.js: Added.
* Animometer/tests/master/resources/stage.css: Added.
2015-12-23 Jon Lee <jonlee@apple.com>
Split benchmark into two different pages
https://bugs.webkit.org/show_bug.cgi?id=152458
Reviewed by Simon Fraser.
Address comments.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the
sampler goes away, and a later call to get the JSON data is no longer available. Process the data
right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData.
* Animometer/resources/extensions.js:
(Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause.
(Array.prototype.find.Array.prototype.find): Update the null check.
(ResultsDashboard.prototype._processData): Use the already-processed data.
* Animometer/resources/runner/animometer.css:
(.frame-container > iframe): Remove calc().
Move Array functions to extensions.js since that is included by the harness.
Add ES6 Array polyfills.
* Animometer/resources/algorithm.js:
(Array.prototype.swap): Moved to extensions.js.
* Animometer/resources/extensions.js:
(Array.prototype.swap):
(Array.prototype.fill): Added.
(Array.prototype.find): Added.
Adjust styles for iPad.
* Animometer/resources/runner/animometer.css:
(@media screen and (min-device-width: 768px)): Apply to iPad as well.
(@media screen and (max-device-width: 1024px)): Update width for iPads.
Adjustment styles for iOS.
* Animometer/developer.html: Different divs contain the iframe, so use a class instead and
update the style rules.
* Animometer/index.html:
* Animometer/resources/debug-runner/animometer.css: Remove extraneous rules.
(@media screen and (min-device-width: 1800px)): Move this up.
* Animometer/resources/runner/animometer.css: Add rules to accomodate iOS.
Get rid of prefixed flex properties for now.
* Animometer/resources/debug-runner/animometer.css:
* Animometer/resources/runner/animometer.css:
Update the structure of the harness. Remove the JSON-per-test but keep
the JSON of the whole test run. Use the full page in order to display
the graph.
* Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score,
average, and worst 5% statistics.
* Animometer/index.html: Make structure similar to developer.html.
* Animometer/resources/debug-runner/animometer.css: Remove most of the
button rules since they are superfluous. Move the progress bar to the
top, fixed. Update the results page rules.
* Animometer/resources/debug-runner/animometer.js: Remove most of the
additions to sectionsManager since they are no longer needed.
(setSectionHeader): Updates header of the section.
(window.suitesManager._updateStartButtonState): Update selector.
(showResults): Add keypress event for selecting different data for
copy/paste. Update how the results are populated. Include full test
JSON in a textarea, rather than requiring a button press.
(showTestGraph):
* Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their
title, and the text used as the cell contents, including class name.
* Animometer/resources/extensions.js:
(ResultsTable): Update to include a flattened version of the headers,
used while populating table contents. Remove unneeded helper functions
for creating the table. Rename "show" to "add".
* Animometer/resources/runner/animometer.css: Update rules to
accommodate the new structure.
* Animometer/resources/runner/animometer.js:
(window.sectionsManager.setSectionScore): Helper function to set the
score and mean for a section.
(window.sectionsManager.populateTable): Helper function to set the table.
(window.benchmarkController.showResults): Refactor.
(window.benchmarkController.selectResults): Update selectors.
* Animometer/resources/runner/tests.js: Set Headers. Debug harness
extends it.
Update debug runner to have similar names to the basic runner. Include
that page's CSS and remove extraneous CSS rules.
Get rid of the statistics table #record.
* Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr.
* Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected.
* Animometer/resources/debug-runner/animometer.js: Remove recordTable.
(window.suitesManager._updateStartButtonState): Update selector to #intro.
(setupRunningSectionStyle): Deleted.
* Animometer/resources/runner/animometer.css:
(#test-container.selected): Change to flex-box only when visible.
Remove recordTable.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunner.prototype._runTestAndRecordResults):
* Animometer/resources/runner/tests.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
* Animometer/tests/examples/resources/canvas-electrons.js:
* Animometer/tests/examples/resources/canvas-stars.js:
* Animometer/tests/misc/resources/compositing-transforms.js:
* Animometer/tests/resources/main.js:
* Animometer/tests/resources/stage.js:
(StageBenchmark): Remove _recordTable.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
* Animometer/tests/simple/resources/simple-canvas.js:
* Animometer/tests/template/resources/template-canvas.js:
* Animometer/tests/template/resources/template-css.js:
* Animometer/tests/template/resources/template-svg.js:
* Animometer/tests/text/resources/layering-text.js:
* Animometer/resources/debug-runner/animometer.js:
(willStartFirstIteration): Fix selector, since results-table is used
in multiple places, so it cannot be an id.
Make it possible to select the scores, or the whole table data,
by cycling through different selections through key press of 's'.
* Animometer/resources/runner/animometer.js:
(window.benchmarkController.showResults): Attach a keypress handler
if it hasn't been added already.
(window.benchmarkController.selectResults):
* Animometer/resources/runner/tests.js: Cycle through different
ranges.
Fix a few fly-by errors.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path
since the files are now in the top directory instead of inside runner/.
(BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function.
(BenchmarkRunner.prototype.step): Member variable is never used.
A little stylistic cleanup.
* Animometer/resources/debug-runner/benchmark-runner.js:
* Animometer/resources/extensions.js:
(window.DocumentExtension.createElement):
* Animometer/tests/resources/main.js:
(Benchmark.prototype.record):
* Animometer/tests/resources/stage.js:
(StageBenchmark.prototype.showResults): Reverse progress and message.
The message appears less frequently than the progress.
* Animometer/tests/simple/resources/simple-canvas.js:
(SimpleCanvasBenchmark): Remove unused options.
Add newer version of harness in a new page. Consolidate differences between the two
pages.
* Animometer/developer.html: Include runner/animometer.js. Rename the JS function
to run the benchmark to startBenchmark() instead of startTest(). Rename #running to
#test-container.
* Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container.
* Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px)
instead of 4:3.
Split out benchmarkRunnerClient and benchmarkController.
* Animometer/resources/debug-runner/animometer.js: Move needed functions out of
benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable
and move populating the results table into benchmarkController. Rename _resultsDashboard
to results and make it accessible for other objects to use.
(willAddTestFrame): This is unnecessary. Remove.
(window.sectionsManager.showScore): Grab it from the results object instead of
benchmarkRunnerClient.
(window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js.
(window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark.
(window.benchmarkController.startBenchmark): Refactor to call _startBenchmark.
(window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration()
here.
* Animometer/resources/debug-runner/benchmark-runner.js:
(BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame.
* Animometer/resources/extensions.js:
(ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data
for later referencing.
(ResultsDashboard.prototype.toJSON): Deleted.
(ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really
outputting JSON. Store the processed data into a member variable that can be referenced later.
(ResultsDashboard.prototype.get data): Process the data if it hasn't already.
(ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the
aggregate score.
(ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the
need for an empty children array. This was to allow for a header row in the table that spanned
multiple columns. In the simpler harness, this is not needed.
(ResultsTable.prototype._showEmptyCells):
(ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score,
which is the bare minimum needed for the simpler harness, key off of the header name provided.
* Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are
split into the data and the headers, and are also displayed RTL so that a later patch allows a
user to copy-paste the data easily.
* Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient.
The debug harness will extend these classes.
(window.benchmarkController._startBenchmark): Used by both harnesses.
(window.benchmarkController.startBenchmark): Set hard-coded options.
(window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration()
here.
Get rid of utilities.js. Move it all into extensions.js.
* Animometer/resources/extensions.js:
* Animometer/tests/resources/utilities.js: Removed.
* Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link.
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto.
* Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto.
* Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto.
* Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto.
* Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto.
* Animometer/tests/examples/canvas-electrons.html: Ditto.
* Animometer/tests/examples/canvas-stars.html: Ditto.
* Animometer/tests/misc/compositing-transforms.html: Ditto.
* Animometer/tests/simple/simple-canvas-paths.html: Ditto.
* Animometer/tests/template/template-canvas.html: Ditto.
* Animometer/tests/template/template-css.html: Ditto.
* Animometer/tests/template/template-svg.html: Ditto.
* Animometer/tests/text/layering-text.html: Ditto.
Split tests.js into two. Add a new suite to runner/tests.js.
* Animometer/developer.html: Update the script order. Scripts from
debug-runner/ will always build on those from runner/, and have the
same name.
* Animometer/resources/debug-runner/tests.js: Move "complex examples"
suite into "miscellaneous tests".
(Suite): Deleted.
(Suite.prototype.prepare): Deleted.
(Suite.prototype.run): Deleted.
(suiteFromName): Deleted.
* Animometer/resources/runner/tests.js: Added. Take definitions and
functions needed by the test harness. Leave the test suites behind.
(Suite): Moved from debug script.
(Suite.prototype.prepare): Ditto.
(Suite.prototype.run): Ditto.
(suiteFromName): Ditto.
(testFromName): Ditto.
Move benchmark resources out into resources/debug-runner, and update URLs.
* Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html.
* Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css.
* Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js.
* Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js.
* Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js.
* Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js.
* Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js.
2015-12-11 Jon Lee <jonlee@apple.com>
Improve Animometer on iOS
https://bugs.webkit.org/show_bug.cgi?id=152180
Reviewed by Simon Fraser.
Improve experience on phones. Make the canvas take
up the whole screen.
* Animometer/runner/animometer.html: Add meta viewport.
Remove the container div.
* Animometer/runner/resources/animometer.css: Have buttons lay
out vertically. Update detail arrow glyph. Make the suites and
options section lay out vertically. Remove the top spacers since
we want the canvas to take over the whole screen. Minimal display
is recommended for use.
2015-12-07 Jon Lee <jonlee@apple.com>
Update suites for benchmark
https://bugs.webkit.org/show_bug.cgi?id=151957
Reviewed by Simon Fraser.
* Animometer/runner/animometer.html: Use spacers instead of relying on
justify-content center to center the content. That allows the opening screen
to grow downward when expanding the list of choices, otherwise it expands
from the center, and off the top edge of the screen.
* Animometer/runner/resources/animometer.css:
(.tree): Don't overflow scroll.
(.tree > li > label.tree-label:before): Use better glyphs.
(.tree > li > :checked ~ label.tree-label:before):
(main): Using flex-start for justify-content so that if the section grows too
big it gets pinned to the top edge of the document instead of growing past it.
(.spacer): Make the spacers have a minimum 20px and grow evenly.
(section#home): Add a min-height so that the border will expand if the suite
tests shown make the section grow past the height.
* Animometer/runner/resources/animometer.js: Update the selectors.
(window.suitesManager._treeElement):
(window.suitesManager._suitesElements):
(window.suitesManager._editsElements):
2015-12-07 Jon Lee <jonlee@apple.com>
Update options for benchmark
https://bugs.webkit.org/show_bug.cgi?id=151956
Reviewed by Simon Fraser.
Move "Fix test complexity" and "Adaptive" checkboxes into a radio group.
Move "Show running results" into a radio group, and add options to remove the HUD.
* Animometer/runner/animometer.html: Get rid of the preamble. Wrap the options
in a form for easier referencing in JS.
* Animometer/runner/resources/animometer.css: Show the surrounding border if the
body's display-minimal class name is set.
* Animometer/runner/resources/animometer.js:
Update the way optionsManager gets and sets default values. Include support for
radio groups.
(window.optionsManager.valueForOption):
(window.optionsManager.updateUIFromLocalStorage):
(window.optionsManager.updateLocalStorageFromUI):
(window.benchmarkRunnerClient.willStartFirstIteration):
(window.sectionsManager.setupRunningSectionStyle):
(window.suitesManager._treeElement): Fly-by whitespace fix.
(window.suitesManager._suitesElements): Ditto.
(window.suitesManager.updateEditsElementsState): Update options check.
(window.suitesManager.updateDisplay): Add a new update function for the HUD.
Attach a class to the body depending on the user's choice.
(window.benchmarkController.initialize): Add an event listener when the form
radio buttons update.
(window.benchmarkController.onFormChanged):
(window.optionsManager._optionsElements): Deleted.
(window.optionsManager._adaptiveTestElement): Deleted.
(window.benchmarkController.onChangeAdaptiveTestCheckbox): Deleted.
* Animometer/tests/resources/main.js:
(Benchmark.prototype.update): Update options checks.
* Animometer/tests/resources/stage.js: Update option check.
(StageBenchmark.prototype.showResults):
2015-12-01 Simon Fraser <simon.fraser@apple.com>
Add a basic compositing Animometer test
https://bugs.webkit.org/show_bug.cgi?id=151724
Reviewed by Dean Jackson.
Add a "bouncing particles" test that moves composited layers around, optionally with a filter.
This is added under a new "Miscellaneous" category.
Remove the test templates category from the UI.
* Animometer/runner/resources/tests.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
(BouncingCssShape.prototype.animate):
* Animometer/tests/misc/compositing-transforms.html: Added.
* Animometer/tests/misc/resources/compositing-transforms.js: Added.
(BouncingCompositedImage):
(BouncingCompositedImage.prototype._move):
(BouncingCompositedImage.prototype.animate):
(CompositingTransformsStage):
(CompositingTransformsStage.prototype.createParticle):
(CompositingTransformsStage.prototype.particleWillBeRemoved):
(CompositedTransformsBenchmark):
(CompositedTransformsBenchmark.prototype.createStage):
(window.benchmarkClient.create):
2015-11-30 Said Abou-Hallawa <sabouhallawa@apple.com>
Fix the graphics benchmark complexity bounds adjustment
https://bugs.webkit.org/show_bug.cgi?id=151670
Reviewed by Simon Fraser.
Make sure the graphics benchmark complexity bounds adjustment is applied
to the absolute lower bound.
* Animometer/tests/resources/math.js:
(PIDController.prototype._saturate):
2015-11-30 Said Abou-Hallawa <sabouhallawa@apple.com>
Add an option to select the results form the graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=151666
Reviewed by Ryosuke Niwa.
We need an easy way to select the graphics benchmark results table such
that when it is copied to the clipboard, rich text format is set to the
clipboard.
* Animometer/runner/animometer.html: Add a new button to select the results table or JSON.
* Animometer/runner/resources/animometer.js:
(window.sectionsManager._sectionDataElement): Selects the container <data> element.
(window.sectionsManager._sectionDataDivElement): Replace a literal string with a string table entry.
(window.sectionsManager.showTestName): Replace a literal string with a string table entry.
(window.sectionsManager.selectData): Selects the container <data> element in a selection.
(window.sectionsManager.selectDataContents): Select the contents of container <data> element in a selection.
(window.benchmarkController.selectResults): Selects the results table.
(window.benchmarkController.showJSON): Function rename.
(window.benchmarkController.selectJSON): Selects the contents of the results JSON.
(window.benchmarkController.showJson): Deleted.
2015-11-20 Simon Fraser <simon.fraser@apple.com>
Animometer: graphs should not do interpolation
https://bugs.webkit.org/show_bug.cgi?id=151526
Reviewed by Simon Fraser.
Having the graphs do interpolation is misleading, because you can't see the actual data.
Also remove "shape-rendering: crispEdges;" so the lines get antialiased.
* Animometer/runner/resources/animometer.css:
(section#test-graph > data > svg): Deleted.
* Animometer/runner/resources/graph.js:
(graph): Deleted.
2015-11-19 Said Abou-Hallawa <sabouhallawa@apple.com>
Calculate the graphics benchmark test gain adaptively
https://bugs.webkit.org/show_bug.cgi?id=151208
Reviewed by Darin Adler.
We need to calculate the gain of the graphics benchmark tests adaptively
and get rid of the gain and limits parameters we have to choose manually
for every test. We are going to use the classic Ziegler–Nichols method for
calculating the gain and integral and derivative times. We are going to
try moving on a cubic curve during the manual stage from y0 to reach ysp.
We also going to use a saturation actuator to ensure the system does not
fluctuate.
* Animometer/resources/extensions.js:
(ResultsTable.prototype._isNoisyMeasurement): Fix a parameter name.
(ResultsTable.prototype._isNoisyTest): Since score is a member of testResults, we need to limit our search to frame rate and complexity.
(ResultsTable.prototype._showTest): Pass the correct parameter to _isNoisyMeasurement().
* Animometer/resources/strings.js: Fix the indentation and name and value of a string.
* Animometer/runner/resources/tests.js: Remove all the manual gains and limits parameters which had to be passed to every test.
* Animometer/tests/resources/main.js:
(BenchmarkState.prototype.currentStage): Fix an enum name.
(Benchmark): Get rid of manual gain and limits.
(Benchmark.prototype.update): Simplify the calculation by having all the times in ms.
* Animometer/tests/resources/math.js:
(PIDController): Get rid of the manual gain and limits and the magic numbers for Ti and Td.
(PIDController.prototype._yPosition): Tells whether the test current output is moving towards the set-point or away from it.
(PIDController.prototype._distanceUltimate): Calculates the ultimate distance from y0 after time t using a cubic formula.
(PIDController.prototype._distance): Calculates the distance of y relative to y0.
(PIDController.prototype._gainIncrement): Decides how much the proportional gain should be increased during the manual gain stage.
(PIDController.prototype._updateStage): Updates the stage of the controller based on its current stage and the system output.
(PIDController.prototype._tuneP): Tunes the system before calculating the PID controller gains.
(PIDController.prototype._tunePID): PID tuning function.
(PIDController.prototype._tune):
(PIDController.prototype._saturate):
(PIDController.prototype.tune): Manages calculating the controller parameters. It then returns a PID tuning value.
(PIDController.prototype._sat): Deleted. We may need to return it back but the limits have to be calculated adaptively not manually.
2015-11-17 Said Abou-Hallawa <sabouhallawa@apple.com>
Reorganize the graphics benchmark string table
https://bugs.webkit.org/show_bug.cgi?id=151334
Reviewed by Simon Fraser.
Make the graphics benchmark string table be an object of sub-objects. Each
sub-object represents an associative array, the key is the string name and
the value is the string data.
* Animometer/resources/extensions.js:
(ResultsDashboard.prototype.toJSON):
(ResultsTable.prototype._showGraph):
(ResultsTable.prototype._showJSON):
(ResultsTable.prototype._isNoisyMeasurement):
(ResultsTable.prototype._isNoisyTest):
(ResultsTable.prototype._showTest):
(ResultsTable.prototype._showSuite):
(ResultsTable.prototype._showIteration):
* Animometer/resources/sampler.js:
(Sampler.prototype.toJSON):
* Animometer/resources/strings.js:
* Animometer/runner/resources/animometer.js:
(window.benchmarkRunnerClient.didFinishLastIteration):
(window.suitesManager.updateLocalStorageFromJSON):
(window.benchmarkController.showResults):
(window.benchmarkController.showJson):
(window.benchmarkController.showTestGraph):
(window.benchmarkController.showTestJSON):
* Animometer/runner/resources/tests.js:
* Animometer/tests/resources/main.js:
2015-11-17 Said Abou-Hallawa <sabouhallawa@apple.com>
Disable flattening the stage iframe of the graphics benchmark when running on iOS
https://bugs.webkit.org/show_bug.cgi?id=151361
Reviewed by Simon Fraser.
Use fixed size for stage iframe of the graphics benchmark to disable
flattening the iframe while animating the particles. Also ensure the
bouncing particles do not go outside the iframe's boundaries.
* Animometer/runner/resources/animometer.css:
(section#running > #running-test > iframe):
(@media screen and (min-device-width: 1800px)):
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
(BouncingParticle.prototype.animate):
2015-11-17 Said Abou-Hallawa <sabouhallawa@apple.com>
Use the media queries to dynamically set the stage for the graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=151327
Reviewed by Simon Fraser.
Clean setting the benchmark css rules by using the media queries. Accessing
document.stylesheets.cssRules seems to be unreliable. Fix the test harness
load event listener invocation. And also remove the options for normalizing
the stage resolution for retina display.
* Animometer/resources/extensions.js:
(window.DocumentExtension.insertCssRuleAfter): Deleted.
* Animometer/runner/animometer.html:
* Animometer/runner/resources/animometer.css:
(@media screen and (min-device-width: 1800px)):
* Animometer/runner/resources/animometer.js:
(window.sectionsManager.setupRunningSectionStyle):
(window.benchmarkController.initialize):
(window.sectionsManager.setupSectionStyle): Deleted.
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
(BouncingParticlesStage):
* Animometer/tests/text/layering-text.html:
* Animometer/tests/text/resources/layering-text.js:
(LayeringTextStage):
(LayeringTextStage.prototype._setFontSize): Deleted.
2015-11-16 Said Abou-Hallawa <sabouhallawa@apple.com>
Remove the option for animating using setInterval from the graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=151283
Reviewed by Darin Adler.
Get rid of the option to run animation using setInterval().
* Animometer/tests/resources/main.js:
(Animator.prototype.animate):
(Benchmark):
(Benchmark.prototype.start):
(Animator.prototype.start): Deleted.
2015-11-16 Said Abou-Hallawa <sabouhallawa@apple.com>
Highlight the alarming test results in the graphics benchmark results page
https://bugs.webkit.org/show_bug.cgi?id=151286
Reviewed by Simon Fraser.
When showing the results of a test in the graphics benchmark the following
criteria is going to be applied:
1. If the standard deviation of the test complexity or the frame rate is
equal to or more than 10%, the standard deviation and the test name
will be displayed in red.
2. If the average frame rate is not in the range = [(desired_frame_rate - 2)
.. (desired_frame_rate + 2)], the average frame rate and the test name will
be displayed in red.
* Animometer/resources/extensions.js:
(ResultsTable.prototype._showHeaderRow):
(ResultsTable.prototype._showHeader):
(ResultsTable.prototype._showEmptyCell):
(ResultsTable.prototype._showText):
(ResultsTable.prototype._showFixedNumber):
(ResultsTable.prototype.):
(ResultsTable.prototype._showGraph):
(ResultsTable.prototype._showJSON):
(ResultsTable.prototype._isAlarmingMeasurement):
(ResultsTable.prototype._isAlarmingTestResults):
(ResultsTable.prototype._showEmptyCells):
(ResultsTable.prototype._showEmptyRow):
(ResultsTable.prototype._showTest):
(ResultsTable.prototype._showSuite):
(ResultsTable.prototype._showIteration):
(ResultsTable.prototype.showRecord):
(ResultsTable.prototype.showIterations):
(ResultsTable.prototype._showEmpty): Deleted.
* Animometer/runner/resources/animometer.js:
(window.benchmarkRunnerClient.didFinishLastIteration):
* Animometer/tests/resources/stage.js:
(StageBenchmark.prototype.showResults):
2015-11-16 Said Abou-Hallawa <sabouhallawa@apple.com>
Clean referencing the options object in the graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=151284
Reviewed by Simon Fraser.
Get rid of the Benchmark.options member and rely only on the private member
Benchmark._options. The animator need to have its own options member instead
of accessing it from its reference to Benchmark object.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
(BouncingCanvasParticlesAnimator):
(BouncingCanvasParticlesBenchmark.prototype.createAnimator):
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
(BouncingParticle.prototype.animate):
(BouncingParticlesAnimator):
(BouncingParticlesBenchmark.prototype.createAnimator):
* Animometer/tests/examples/resources/canvas-electrons.js:
(CanvasElectronsStage.prototype.animate):
(CanvasElectronsAnimator):
(CanvasElectronsBenchmark.prototype.createAnimator):
(window.benchmarkClient.create):
* Animometer/tests/examples/resources/canvas-stars.js:
(CanvasStarsStage.prototype.animate):
(CanvasStarsAnimator):
(CanvasStarsBenchmark.prototype.createAnimator):
(window.benchmarkClient.create):
* Animometer/tests/resources/main.js:
(BenchmarkState.prototype.currentProgress):
(Animator):
(Animator.prototype.animate):
(Benchmark):
(Benchmark.prototype.update):
* Animometer/tests/resources/stage.js:
(Stage.prototype.clear):
(StageAnimator):
(StageBenchmark.prototype.createAnimator):
(StageBenchmark.prototype.tune):
(StageBenchmark.prototype.showResults):
* Animometer/tests/simple/resources/simple-canvas.js:
(SimpleCanvasStage.prototype.animate):
(SimpleCanvasAnimator):
(SimpleCanvasAnimator.prototype.animate):
(SimpleCanvasBenchmark.prototype.createAnimator):
* Animometer/tests/template/resources/template-canvas.js:
(TemplateCanvasStage.prototype.animate):
(TemplateCanvasBenchmark.prototype.createAnimator):
(window.benchmarkClient.create):
2015-11-13 Said Abou-Hallawa <sabouhallawa@apple.com>
Eliminate a request for layout every time an item is added to the stage of the graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=151289
Reviewed by Simon Fraser.
Cache the stage size when it is created instead of requesting every time
an object is added via clientWidth and clientHeight.
* Animometer/resources/extensions.js:
(Insets.elementPadding):
* Animometer/tests/resources/stage.js:
(Stage):
(Stage.prototype.get size):
2015-11-06 Said Abou-Hallawa <sabouhallawa@apple.com>
Initialize the graphics benchmark's Kalman filter with estimated 60 FPS
https://bugs.webkit.org/show_bug.cgi?id=150965
Reviewed by Darin Adler.
This should give the benchmark more accurate reading at warmup time. And
hence we can safely reduce the test running time to be 10 seconds.
* Animometer/runner/animometer.html:
Add "defer" back when loading resources/animometer.js since this script
depends on many other scripts and we need to wait till the page is parsed.
Also change the default test interval to be 10 seconds.
* Animometer/runner/resources/graph.js:
(graph): Make the test results curves smoother.
* Animometer/tests/resources/main.js:
(Animator): Initialize the Kalman filter with 60 FPS which should be true
if the test page is empty.
(Animator.prototype.animate):
* Animometer/tests/resources/math.js:
(KalmanEstimator): Fix the initial value of _vecX_est.
_vecX_est[0] = current FPS (= 60FPS when the test page is empty)
_vecX_est[1] = first time derivative of FPS (=0; FPS has been constant).
_vecX_est[2] = second time derivative of FPS (=0; since _vecX_est[1]=0).
(KalmanEstimator.prototype.estimate): Add some comments.
2015-11-04 Said Abou-Hallawa <sabouhallawa@apple.com>
Remove "defer" from the scripts' references in the graphics benchmark home page
https://bugs.webkit.org/show_bug.cgi?id=150915
Reviewed by Simon Fraser.
It causes the benchmark to be very flakey.
* Animometer/runner/animometer.html:
2015-11-01 Said Abou-Hallawa <sabouhallawa@apple,com>
Add an option to make the graphics benchmark runs a specific test with fixed complexity
https://bugs.webkit.org/show_bug.cgi?id=150529
Reviewed by Darin Adler.
Beside each test in the suites tree, we are going to show the complexity
arithmetic mean of the of the last run in an edit control. Based on a
new option these edit controls will all be visible or hidden. If they are
visible their values can be changed. The benchmark runner if it run in
the non-adaptive mode will set the complexity of the test to the passed
value and will not change it ever. The animator will animate the test and
frame rate will also be measured.
* Animometer/runner/animometer.html: Add a new option for the non-adaptive mode.
* Animometer/runner/resources/animometer.css:
(section#home input[type="number"]): Define the width of all the edit control in the <home> section.
(section#home > suites input[type="number"]): The edit controls in the <suites> box will be right aligned and hidden by default.
(section#home > suites input[type="number"].selected): When the class "selected" is added, the edit controls will be visible.
(section#home > options > label > input[type="number"]): Deleted.
* Animometer/runner/resources/animometer.js:
(window.benchmarkRunnerClient.didFinishLastIteration): Update the local storage with the results of each test.
(window.optionsManager._adaptiveTestElement): Returns the checkbox for setting the adaptive test option.
(window.suitesManager._editElement): Returns the edit element associated with each test element in the suites tree.
(window.suitesManager._editsElements): Returns a list of all the elements in the <suites> box.
(window.suitesManager._localStorageNameForTest): Change this function to take strings.
(window.suitesManager._createTestElement): Adds an edit control beside each test.
(window.suitesManager.updateEditsElementsState): Adds/Removes the 'selected' class to/from all the tests edit elements.
(window.suitesManager.updateUIFromLocalStorage): Reads the edit control value from the local storage.
(window.suitesManager.updateLocalStorageFromUI): Saves the edit control value to the local storage.
(window.suitesManager.updateLocalStorageFromJSON): Saves the last run results to the local storage.
(window.benchmarkController.initialize): Shows/Hides the test edit controls based on the adaptive test option.
(window.benchmarkController.onChangeAdaptiveTestCheckbox): An onchange event handler for the adaptive test checkbox.
* Animometer/tests/resources/main.js:
(Benchmark.prototype.update): Fix the complexity of the test if the running mode is non-adaptive test and desired complexity is not zero.
(window.runBenchmark): Add the test complexity as a new benchmark option.
2015-11-01 Said Abou-Hallawa <sabouhallawa@apple,com>
Make the size of the benchmark canvas adaptive to the screen size and screen resolution
https://bugs.webkit.org/show_bug.cgi?id=150530
Reviewed by Darin Adler.
We want to set the size of the benchmark stage dynamically such that it
depends on the screen resolution and the device scale factor. This patch
does more than that because the home page css was not done properly. To
use the flex box layout, the animometer.css has to be rewritten almost from
scratch. The suites tree has to be rewritten also because it was not collapsing
and with the flex box layout it was going outside of the window area. The
options handling and the local storage handling had to be rewritten to
allow more flexibility with this patch and the future patches. The code
in animometer.js was reorganized into objects to allow distributing the code
nicely among separate entities.
* Animometer/resources/extensions.js:
(Point.elementClientSize): Returns the client size of an HTMLElement as a Point object.
(Insets.prototype.get width): Follow the function opening brace style guidelines.
(Insets.prototype.get height):
(Insets.prototype.get size): Returns the size of an Insets as a Point object.
(window.DocumentExtension): Provides document helper functions. It should be assailable from the runner and the tests.
(window.DocumentExtension.createElement): Creates an HTMLElement given its name, attributes and parentElement.
(window.DocumentExtension.createSvgElement): Creates an SVGElement given its name, attributes and parentElement (moved from utilities.js).
(window.DocumentExtension.insertCssRuleAfter): Inserts a CSS rule after an exiting rule given its text.
(ResultsTable.prototype._showHeader): Use DocumentExtension functions.
(ResultsTable.prototype._showGraph): Use DocumentExtension functions and create a real button for "Graph..." option.
(ResultsTable.prototype._showJSON): Use DocumentExtension functions and create a real button for "JSON..." option.
(Options): Deleted.
* Animometer/runner/animometer.html: Restructure the page to use the flex box layout.
* Animometer/runner/resources/animometer.css:
(html,body):
(button):
(button.large-button):The large button appears in the animometer.html.
(button.large-button:active):
(button.large-button:disabled):
(button.small-button): The small button appears in the results table.
(button.small-button:active):
(.tree): The tree class is used to list the suites and their tests.
(.tree .expand-button): This button expands a tree element.
(.tree .expand-button ~ ul): Hide the children (<ul>...</ul>) of a parent node by default.
(.tree .expand-button:checked ~ ul): Show the children of a parent node only when checked.
(.tree ul): Hide the list bullets.
(.tree li): Indent every node in the tree relative to its parent.
(.tree ul li): Indent all the non top level nodes only (the tests nodes in our case).
(.tree > li:last-child): Do not indent the bottom of the last child node.
(.tree-label): Style for all the labels in the tree.
(label.tree-label): Style for the labels in the top level only (the suites nodes in our case).
(label.tree-label:before): Style the unchecked case of the expand-button.
(:checked ~ label.tree-label:before): Style the checked case of the expand-button.
(table.results-table): The results table appears while running the test and at the end.
(.results-table td):
(.results-table th):
(div.results-json): The JSON div appears per test or for the whole run.
(main): This is the flex box container.
(section): A section is displayed exclusively inside the <main>. It is hidden by default.
(section.selected): When it is selected, its layout is flex layout.
(section > footer): The header or the footer of a section should not take more than 15% of the container.
(section#home): The home section has <suites> and <options> parts to be laid out in the middle.
(section#home > options):
(section#home > suites): The <suites> should not take more than 40% of the width.
(section#home > options > label): The benchmark title.
(section#home > header > h2): The benchmark title.
(section#home > options > label > input[type="number"]): Sets the width of the option edit control.
(section#running): The running section contain the runner <iframe> which takes the whole area of the <main>.
(section#running > #running-test): This is the <iframe> container.
(section#running > #running-test > iframe): The <iframe> is created by the runner for each test.
(section#running > #progress): This is the progress bar.
(section#running > #progress > #progress-completed): This is another element which grows while the runner is progressing.
(section#running > #record): This the container of the record results table which is shown while running a test.
(section#results):
(section#json):
(section#test-json):
(section#test-graph): All these sections have the same layout. A <data> element is laid out between <header> and <footer>.
(section#results > data):
(section#json > data):
(section#test-json > data):
(section#test-graph > data): The <data> element should take 70% of the <section>.
(section#test-graph > data > svg):
(.axis line):
(.left-samples): These styles are for the d3 graph.
(section#test-json > data): This is the style of the JSON <data> element.
(iframe): Deleted.
(label, p): Deleted.
(section > p): Deleted.
(section#home > p): Deleted.
(section#home > p:first-child): Deleted.
(#testContainer): Deleted.
(section#running #progress-completed): Deleted.
(section#results > table): Deleted.
(section#results > table td, th): Deleted.
(section#results > table tr.alt, td): Deleted.
(section#results > table th): Deleted.
(section#json > textarea): Deleted.
(.options): Deleted.
(.options p): Deleted.
(#suites ul): Deleted.
(#suites ul ul): Deleted.
(#suites ul ul input, #suites ul ul label): Deleted.
(#suites.showTests ul ul): Deleted.
(.column): Deleted.
(input[type="number"]): Deleted.
(.buttons): Deleted.
(.small-button): Deleted.
(#graphContainer): Deleted.
(.right-samples): Deleted.
(.sample-time): Deleted.
(.left-mean): Deleted.
(.right-mean): Deleted.
* Animometer/runner/resources/animometer.js:
(window.benchmarkRunnerClient.initialize): Initialize the client object with the options and the suites.
(window.benchmarkRunnerClient.willStartFirstIteration): Use new css selectors for results and the record table.
(window.benchmarkRunnerClient.didFinishLastIteration): Move the code which sets the JSON text to sectionsManager.showJSON().
(window.sectionsManager): Responsible of managing the <section>s elements inside animometer.html.
(window.sectionsManager._sectionHeaderH1Element): Return the <h1> inside the <header> of a given section.
(window.sectionsManager._sectionDataDivElement): Return the <div> inside the <data> of a given section.
(window.sectionsManager.showScore): Show the score of the last benchmark run.
(window.sectionsManager.showTestName): Show the test name for detailed results <section>.
(window.sectionsManager.showJSON): Shows the JSON text of the last benchmark or for a specific test.
(window.sectionsManager.showSection): Shows a specific <section> in the <main> container.
(window.sectionsManager.setupSectionStyle): Sets css attributes for all the <section>s.
(window.sectionsManager.setupRunningSectionStyle): Sets the css attributes for the running <section> only.
(window.optionsManager): Responsible of managing the user options and streaming them to/form the localStorage.
(window.optionsManager._optionsElements): Returns the children <input> elements of the <options>.
(window.optionsManager.updateUIFromLocalStorage): Restore the values of the <options> UI elements from the local storage.
(window.optionsManager.updateLocalStorageFromUI): Saves the values of the <options> UI elements to the local storage.
(window.suitesManager): Responsible of managing the user suites and streaming them to/form the localStorage.
(window.suitesManager._treeElement): Returns the suites tree container element.
(window.suitesManager._suitesElements): Returns a list of the suites elements.
(window.suitesManager._checkboxElement): Returns the checkbox element of a given suite.
(window.suitesManager._localStorageNameForTest): Generates a string for the tuple <suite, test> to be saved in the localStorage.
(window.suitesManager._updateSuiteCheckboxState): Updates the state of a suite checkbox from the state of its tests' checkboxes.
(window.suitesManager._updateStartButtonState): Updates the state of the start button from the state of the suites' checkboxes.
(window.suitesManager._onChangeSuiteCheckbox): Called when a suite checkbox is clicked.
(window.suitesManager._onChangeTestCheckbox): Called when a test checkbox is clicked.
(window.suitesManager._createSuiteElement): Creates suite node in the suites tree.
(window.suitesManager._createTestElement): Creates test node in the suites tree.
(window.suitesManager.createElements): Creates the suites tree dynamically from the array Suites.
(window.suitesManager.updateUIFromLocalStorage): Restore the values of the <suites> UI elements from the local storage.
(window.suitesManager.updateLocalStorageFromUI): aves the values of the <suites> UI elements to the local storage.
(window.benchmarkController): This is the UI controller of the animometer.html page.
(window.benchmarkController.initialize): Called when the animometer.html page is loaded.
(window.benchmarkController._runBenchmark): Starts a benchmark run.
(window.benchmarkController.startTest): Called when the "Start Test" button is clicked.
(window.benchmarkController.showResults): Called at the end of the test to show the final results.
(window.benchmarkController.showJson): Called from the results page to show the JSON of the last benchmark run.
(window.benchmarkController.showTestGraph): Called from the results the table to show a graph for the samples of a specific test.
(window.benchmarkController.showTestJSON): Called from the results the table to show a JSON for the samples of a specific test.
(showSection): Deleted.
(startTest): Deleted.
(showResults): Deleted.
(showJson): Deleted.
(showTestGraph): Deleted.
(showTestJSON): Deleted.
(initialize.toggleTestsCheckbox.onchange): Deleted.
(initialize): Deleted.
(updateSuiteSelection): Deleted.
(updateTestSelection): Deleted.
(updateSuiteCheckbox): Deleted.
(localStorageNameForTest): Deleted.
(populateSettings.): Deleted.
(populateSettings): Deleted.
* Animometer/runner/resources/benchmark-runner.js:
(BenchmarkRunner): Pass the frameContainer element to the BenchmarkRunner.
(BenchmarkRunner.prototype._appendFrame): Remove unused parameter unwanted styling code.
(BenchmarkRunner.prototype.runMultipleIterations): Use the this._client.iterationCount instead of passing it as a parameter also.
* Animometer/runner/resources/graph.js:
(graph): Calculate the size of the chart from the container element.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
(BouncingSvgImage):
* Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
(BouncingSvgParticlesStage.prototype._createDefs):
(BouncingSvgParticlesStage.prototype._createClipStar):
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
(BouncingSvgShape.prototype._createShape):
(BouncingSvgShapesStage.prototype.createGradient):
Call DocumentExtension.createSvgElement() instead of calling Utilities.createSvgElement().
* Animometer/tests/resources/main.js:
(Animator.prototype.animate):
(Benchmark):
(Benchmark.prototype.update):
* Animometer/tests/resources/stage.js:
(StageBenchmark.prototype.showResults):
Rename the options to match the <input> ids in animometer.html.
* Animometer/tests/resources/utilities.js:
(window.Utilities.createSvgElement): Deleted.
* Animometer/tests/text/layering-text.html:
* Animometer/tests/text/resources/layering-text.js:
(LayeringTextStage):
(LayeringTextStage.prototype._setFontSize): Sets the size of the text dynamically such that they all fit in one stage.
2015-10-29 Simon Fraser <simon.fraser@apple.com>
Animometer computes frame rate incorrectly
https://bugs.webkit.org/show_bug.cgi?id=150698
Reviewed by Tim Horton.
The existing code incremented this._frameCount after checking against this._dropFrameCount.
This has the effect of setting this._measureTimeOffset one frame too late, so
we were measuring only two frames, not three, and thus computing an incorrect fps.
* Animometer/tests/resources/main.js:
(Animator.prototype.animate):
2015-10-27 Jon Lee <jonlee@apple.com>
Add an option to make the graphics benchmark runs a specific test
https://bugs.webkit.org/show_bug.cgi?id=150528
rdar://problem/23246614
Reviewed by Zalan Bujtas.
Add a checkbox that lets the user list all of the available tests, and select
the ones to run repeatedly. The test checkboxes will update the state of the suite
checkbox. The selected tests are stored in localStorage to make it easy to do
repeated runs.
* Animometer/runner/animometer.html: Add a checkbox to show individual tests.
Update other markup.
* Animometer/runner/resources/animometer.css: Make the settings area a little wider
to accommodate the longer names of the tests
* Animometer/runner/resources/animometer.js:
(startBenchmark): Change the way that the suites are fed into the benchmark
runner. Go through each of the suites and their tests, and create a new Suite
with just the enabled tests. While enumerating store the enabled tests into
localStorage.
(initialize): Initialization routine (taking over populateSettings). When the
checkbox for showing tests is toggled, add or remove a class on #suites to show
the individual tests.
(updateSuiteSelection): Called whenever the user toggles the checkbox for a suite.
Either select all or none of the tests.
(updateTestSelection): Called whenever the user toggles the checkbox for a test.
(updateSuiteCheckbox): Update the state of the test's suite's checkbox to
indeterminate if there is at least one enabled test, unchecked if none are selected,
and checked if all are selected.
(localStorageNameForTest): Helper function to get the name of the test to use as
a key to localStorage.
(populateSettings): Add the tests for each suite into an inner list.
2015-10-26 Said Abou-Hallawa <sabouhallawa@apple.com>
Add an option to output the results of the graphics benchmark in JSON format
https://bugs.webkit.org/show_bug.cgi?id=150484
<rdar://problem/23243721>
Reviewed by Darin Adler.
* Animometer/resources/extensions.js:
(ResultsDashboard): A new class to hold the iterations results.
(ResultsDashboard.prototype.push): Appends an iteration results;
(ResultsDashboard.prototype.toJSON): Converts the iterations results to JSON format.
(RecordTable.prototype.clear): Clears the results table.
(RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
(RecordTable.prototype._showHeader): Shows the table header titles.
(RecordTable.prototype._showEmpty): Shows an empty table cell.
(RecordTable.prototype._showValue): Shows a number value in the results table.
(RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
(RecordTable.prototype._showTest): Shows the results of a single test.
(RecordTable.prototype._showSuite): Shows the results of a single suite.
(RecordTable.prototype.showRecord): Shows a single iteration for a single test.
(RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.
(ResultsTable): RecordTable was renamed to ResultsTable.
(ResultsTable.prototype.clear): Clears the table element.
(ResultsTable.prototype._showHeaderRow): Shows a row in the results table header.
(ResultsTable.prototype._showHeader): Shows the results table header.
(ResultsTable.prototype._showEmpty): Shows an empty table cell.
(ResultsTable.prototype._showText): Shows a string in a new table cell.
(ResultsTable.prototype._showFixedNumber): Shows a number in a new table cell.
(ResultsTable.prototype._showGraph): Shows a button for the sampled data graph.
(ResultsTable.prototype._showJSON): Shows a button for the sampled data JSON.
(ResultsTable.prototype._showTest): Shows the results of a single test.
(ResultsTable.prototype._showSuite): Shows the results of a single suite.
(ResultsTable.prototype._showIteration): Shows the results of a single iteration.
(ResultsTable.prototype.showRecord): Shows a single iteration for a single test.
(ResultsTable.prototype.showIterations): Shows all the results.
(RecordTable): Deleted.
(RecordTable.prototype.clear): Deleted.
(RecordTable.prototype._showTitles): Deleted.
(RecordTable.prototype._showHeader): Deleted.
(RecordTable.prototype._showEmpty): Deleted.
(RecordTable.prototype._showValue): Deleted.
(RecordTable.prototype._showSamples): Deleted.
(RecordTable.prototype._showTest): Deleted.
(RecordTable.prototype._showSuite): Deleted.
(RecordTable.prototype.showRecord): Deleted.
(RecordTable.prototype.showIterations): Deleted.
* Animometer/resources/sampler.js:
(Sampler.prototype.startSampling): Use forEach.
(Sampler.prototype.sample): Use forEach.
(Sampler.prototype.toJSON): Converts the sampler data to JSON format.
* Animometer/resources/strings.js: Added.
This new file will be used to associate the strings used by the benchmark
with IDs. A string can be changed in one place without having to change
all the instances of this string in multiple files. There two groups of
strings in this file. The first one is used by the UI elements and the second
group is used when constructing the results JSON.
* Animometer/runner/animometer.html:
* Animometer/runner/resources/animometer.css:
* Animometer/runner/resources/animometer.js:
(window.benchmarkRunnerClient.willAddTestFrame):
(window.benchmarkRunnerClient.willStartFirstIteration):
(window.benchmarkRunnerClient.didRunSuites):
(window.benchmarkRunnerClient.didFinishLastIteration):
Make benchmarkRunnerClient uses ResultsDashboard instead of _iterationsSamplers
Get the JSON from ResultsDashboard.toJSON() and pass it to ResultsTable.showIterations().
Also set the textContent of the "#json" textarea with the results JSON.
(showResults): Delete unneeded code.
(showJson): Shows the "json" section.
(showTestGraph): Rename showGraph() to be showTestGraph().
(showTestJSON): Shows the JSON of a single testResults.
(showGraph): Deleted.
* Animometer/runner/resources/tests.js:
Use the string table instead of putting literal strings.
* Animometer/tests/resources/stage.js:
(StageBenchmark.prototype.showResults):
Fix the parameters which are passed to RecordTable.showRecord().
* Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-css-images.html:
* Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
* Animometer/tests/bouncing-particles/bouncing-svg-images.html:
* Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
* Animometer/tests/examples/canvas-electrons.html:
* Animometer/tests/examples/canvas-stars.html:
* Animometer/tests/simple/simple-canvas-paths.html:
* Animometer/tests/template/template-canvas.html:
* Animometer/tests/template/template-css.html:
* Animometer/tests/template/template-svg.html:
* Animometer/tests/text/layering-text.html:
Include the new strings.js file in all the test files.
2015-10-12 Jon Lee <jonlee@apple.com>
Add canvas line dash test
https://bugs.webkit.org/show_bug.cgi?id=150078
<rdar://problem/23082347>
Reviewed by Dean Jackson.
* Animometer/runner/resources/tests.js: Add line dash test.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
(CanvasLineDashStage): Create a new stage with a default dash pattern and stroke style.
Maintain a step which will animate the dash.
(CanvasLineDashStage.prototype.animate): Render the line path with the dash. Increment
the dash offset to animate.
(CanvasPathBenchmark.prototype.createStage): Add the test.
2015-10-12 Jon Lee <jonlee@apple.com>
Add canvas line path tests
https://bugs.webkit.org/show_bug.cgi?id=150076
<rdar://problem/23082285>
Reviewed by Dean Jackson.
* Animometer/runner/resources/tests.js: Add new line path tests, with different
line joins.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
(CanvasLinePathStage): The stage is the same as the SimpleCanvasPathStrokeStage
but sets the lineJoin on the context.
(CanvasPathBenchmark.prototype.createStage): Add the tests.
2015-10-12 Jon Lee <jonlee@apple.com>
Add missing paint objects for arc and arcTo fills
https://bugs.webkit.org/show_bug.cgi?id=150075
<rdar://problem/23082233>
Reviewed by Dean Jackson.
* Animometer/tests/simple/resources/simple-canvas-paths.js: Add missing paint objects
for arcTo and arc segment fills.
(CanvasArcToSegmentFill):
(CanvasArcToSegmentFill.prototype.draw):
(CanvasArcSegmentFill):
(CanvasArcSegmentFill.prototype.draw):
2015-10-12 Jon Lee <jonlee@apple.com>
Add canvas line segment tests
https://bugs.webkit.org/show_bug.cgi?id=150073
<rdar://problem/23082138>
Reviewed by Dean Jackson.
* Animometer/runner/resources/tests.js: Add new line segment tests, with different
line caps.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
(CanvasLineSegment): Add new line segment paint object.
(CanvasLineSegmentStage): Create a new stage that sets the lineCap.
2015-10-12 Jon Lee <jonlee@apple.com>
Add canvas path fill tests
https://bugs.webkit.org/show_bug.cgi?id=150071
<rdar://problem/23082001>
Reviewed by Dean Jackson.
* Animometer/runner/resources/tests.js: Add new pathTypes for path fills.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
(CanvasLinePoint): Add basic point for a line, and call lineTo.
(SimpleCanvasPathFillStage): Add a new stage similar to SimpleCanvasPathStrokeStage.
(CanvasPathBenchmark.prototype.createStage): Add the tests.
2015-10-12 Jon Lee <jonlee@apple.com>
Add canvas path tests
https://bugs.webkit.org/show_bug.cgi?id=150067
rdar://problem/23081463
Reviewed by Dean Jackson.
* Animometer/runner/resources/tests.js: Add a quadratic and bezier path test.
* Animometer/tests/simple/resources/simple-canvas.js:
(SimpleCanvasStage.prototype.tune): This kind of test joins all of the segments
into one long path, and tries to render that one path. Random points make it
difficult to tell what is going on, so add a parameter to the constructor to
confine the area where the random coordinates can land. The more complicated the
case is, the larger an area the path will cover. Add an artificial minimum so
that the first 200 points aren't confined to a space that is too small.
* Animometer/tests/simple/resources/simple-canvas-paths.js:
(SimpleCanvasPathStrokeStage): Add a new kind of stage that inherits from
SimpleCanvasStage. Each time the frame animates a random line width and stroke
color are chosen. The path setup is done outside of each paint object.
(CanvasQuadraticPoint): This point just calls quadraticCurveTo.
(CanvasPathBenchmark.prototype.createStage): Add the tests.
2015-10-12 Jon Lee <jonlee@apple.com>
Add basic canvas tests
https://bugs.webkit.org/show_bug.cgi?id=150066
rdar://problem/23081143
Reviewed by Dean Jackson.
This adds a new test suite that will cover all of the path-based canvas calls.
The patch will be divided up to cover tests with similar techniques.
The simplest version uses a SimpleCanvasStage.
* Animometer/runner/resources/tests.js: Add tests for quadratic, bezier, arcTo,
arc, and rect segments. Also include arcTo, arc, and rect fills.
* Animometer/tests/resources/stage.js:
(Stage.prototype.randomBool): Added for counterclockwise property for arc segments.
(Stage.prototype.randomInt): Fix how values are rounded, used by randomBool. It should
round instead of flooring everything.
* Animometer/tests/simple/resources/simple-canvas.js: Added. Defines common classes
used by all simple canvas tests. The page reads best bottom to top.
(SimpleCanvasStage): Basic stage. Pass a canvasObject which will be used to create new
objects as needed in tune().
(SimpleCanvasStage.prototype.tune): Modeled on other tests. Adds and removed objects
as specified by the provided |count|.
(SimpleCanvasStage.prototype.animate): Iterate over all the objects and ask them to draw.
There is no "animating" of the objects; they will just paint statically on the canvas.
(SimpleCanvasAnimator): Basic animator clears the canvas prior to painting.
(SimpleCanvasBenchmark): Hard-code the feedback loop parameters instead of including
them in the query parameters to the test URLs.
(SimpleCanvasBenchmark.prototype.createAnimator):
* Animometer/tests/simple/simple-canvas-paths.html: Added.
* Animometer/tests/simple/resources/simple-canvas-paths.js: Added. There is no "animating"
of these objects--they just paint statically on the canvas.
(CanvasQuadraticSegment): Paint a quadratic segment stroke.
(CanvasBezierSegment): Paint a bezier segment stroke.
(CanvasArcToSegment): Paint an arcTo stroke.
(CanvasArcSegment): Paint an arc stroke.
(CanvasRect): Paint a rect.
(CanvasRectFill): Paint a filled rect.
(CanvasPathBenchmark):
(CanvasPathBenchmark.prototype.createStage): Look for the pathType and create the
stage using the right paint object.
(window.benchmarkClient.create):
2015-10-12 Jon Lee <jonlee@apple.com>
Refactor tune() to pass in an integer-based count
https://bugs.webkit.org/show_bug.cgi?id=150060
<rdar://problem/23079425>
Reviewed by Dean Jackson.
All of the tune functions do an initial step of flooring the
# of painting objects to add or remove. Factor that out since
the complexity of all of these tests is always expressed in terms
of countable items.
* Animometer/tests/resources/main.js:
(Benchmark.prototype.update): Update the tuneValue.
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
(BouncingParticlesStage.prototype.tune): Remove the count adjustment.
* Animometer/tests/examples/resources/canvas-electrons.js:
(CanvasElectronsStage.prototype.tune): Ditto.
* Animometer/tests/examples/resources/canvas-stars.js:
(CanvasStarsStage.prototype.tune): Ditto.
* Animometer/tests/text/resources/layering-text.js:
(LayeringTextStage.prototype.tune): Ditto.
2015-10-12 Jon Lee <jonlee@apple.com>
Store test-interval in localStorage
https://bugs.webkit.org/show_bug.cgi?id=150055
<rdar://problem/23078879>
Reviewed by Dean Jackson.
* Animometer/runner/resources/animometer.js:
(populateSettings): Keep track of the specified test interval in localStorage
to make it easy to repeat a test suite.
2015-10-12 Jon Lee <jonlee@apple.com>
Remove "../tests/" from the URLs of all tests
https://bugs.webkit.org/show_bug.cgi?id=150054
<rdar://problem/23078784>
Reviewed by Dean Jackson.
Presumably all tests will be running from the tests/ directory,
so we don't have to specify it in all of the test URLs.
* Animometer/runner/resources/benchmark-runner.js:
(BenchmarkRunnerState.prototype.prepareCurrentTest): Prepend
"../tests/" to all tests.
* Animometer/runner/resources/tests.js: Remove "../tests/" from
all URLs.
2015-10-12 Jon Lee <jonlee@apple.com>
Refactor test suites to a separate class.
https://bugs.webkit.org/show_bug.cgi?id=150053
<rdar://problem/23078645>
Reviewed by Dean Jackson.
Create a Suite class to refactor out prepare() and run().
Generate the checkboxes representing the suites using Suites
instead of maintaining a separate list. Also, save the
selections out to localStorage.
* Animometer/runner/animometer.html: Remove the explicitly listed
suites. These will be generated from Suites instead.
* Animometer/runner/resources/animometer.js:
(populateSettings): Iterate through Suites, and create the
label and checkbox. Attach the Suite object to the checkbox so
when the benchmark is started, we get direct access. Initialize
the checkmark based on its value in localStorage. Set this to
run when DOMContentLoaded is dispatched.
(startBenchmark): Grab all of the checkboxes, inspect their
values, add it to enabledSuites if selected. Remember whether
the suite was enabled in localStorage, so that it's easy to do
repeated runs.
* Animometer/runner/resources/tests.js:
(Suite): Create a new Suite class. Refactor out prepare() and
run(), since all of them have the same implementation. Populate
Suites with Suite instances instead of generic objects.
2015-10-12 Jon Lee <jonlee@apple.com>
Update graph styles for legibility.
https://bugs.webkit.org/show_bug.cgi?id=150052
<rdar://problem/23078503>
Reviewed by Dean Jackson.
* Animometer/runner/resources/animometer.css: Update colors and
stroke thicknesses to make the graphs easier to read.
(.smaple-time): Correct to .sample-time
* Animometer/runner/resources/graph.js:
(graph): Ditto.
2015-10-12 Jon Lee <jonlee@apple.com>
Update graph styles for legibility.
https://bugs.webkit.org/show_bug.cgi?id=150052
<rdar://problem/23078503>
Reviewed by Dean Jackson.
* Animometer/runner/resources/animometer.css: Update colors and
stroke thicknesses to make the graphs easier to read.
(.smaple-time): Correct to .sample-time
* Animometer/runner/resources/graph.js:
(graph): Ditto.
2015-10-12 Filip Pizlo <fpizlo@apple.com>
Unreviewed, revert an unintended commit.
* JetStream/Octane2/crypto.js:
(montRevert):
(montReduce):
2015-10-05 Said Abou-Hallawa <sabouhallawa@apple.com>
Add a graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=149053
<rdar://problem/18984169>
Reviewed by Dean Jackson.
Instead of measuring the FPS of the animation, this benchmark measures the
test complexity when rendering at a set-point FPS which should be lower
than 60 FPS. This benchmark tries to stay at the set-point FPS by using
a closed loop control system PID function. The gain of the system is passed
as a parameter when running the test. Measuring the FPS faithfully results
very fluctuating values. A Kalman filter is used to give a better estimate
for the current FPS.
The animation of the tests is done manually. requestAnimationFrame() is
called with a callback. Inside this callback, the test is animating by
changing the positions of the elements inside the page. The test complexity
may change also if the current FPS is not equal to the desired FPS.
In this patch, the benchmark and the tests are included. The shared code
and the tests runner are included in separate patches.
* Animometer/runner/animometer.html:
* Animometer/runner/resources/animometer.js:
Add two new examples for more complex animation techniques.
Add an option to show/hide the test running results which is off by default.
* Animometer/runner/resources/tests.js: Added.
(suiteFromName): Returns a suite given its name.
(testFromName): Returns a test given its suite and name.
* Animometer/tests: Added.
This directory includes all the test suites to be run by the benchmark.
runner. All the tests should try to run on three stages: CSS, canvas and
SVG.
* Animometer/tests/bouncing-particles: Added.
* Animometer/tests/bouncing-particles/resources: Added.
The bouncing particles test is an example of a simple animation technique.
* Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Added.
* Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Added.
* Animometer/tests/bouncing-particles/bouncing-css-images.html: Added.
* Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Added.
* Animometer/tests/bouncing-particles/bouncing-svg-images.html: Added.
* Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Added.
Bouncing particles test pages.
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js: Added.
(BouncingParticle): Base class for a bouncing particle.
(BouncingParticle.prototype.center): Returns the center point or the particle.
(BouncingParticle.prototype.animate): Moves the particle based on its current position, angle and velocity.
(BouncingParticlesAnimator): A sub class of Animator.
(BouncingParticlesStage): Represents the container of all the bouncing particles.
(BouncingParticlesStage.prototype.parseShapeParamters): Gets the shape parameters for shape animating tests.
(BouncingParticlesStage.prototype.randomRotater): Creates a rotater for the particles.
(BouncingParticlesStage.prototype.animate): Animates all the particles.
(BouncingParticlesStage.prototype.tune): Changes the test by adding or removing particles.
(BouncingParticlesBenchmark): Runs the benchmark for bouncing particles test.
(BouncingParticlesBenchmark.prototype.createAnimator): Creates an animator of type BouncingParticlesAnimator.
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: Added.
(BouncingCssShape): A sub class of BouncingParticle for animating CSS shapes.
(BouncingCssShape.prototype._createSpan): Creates a <span> element and takes the shape and clipping classes into consideration.
(BouncingCssShape.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
(BouncingCssShape.prototype.animate): Rotates and moves the shape to a new location.
(BouncingCssShapesStage): A sub class of BouncingParticlesStage for animating CSS shapes.
(BouncingCssShapesStage.prototype.createParticle): Creates a particle of type BouncingCssShape.
(BouncingCssShapesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.
(BouncingCssShapesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS shapes.
(BouncingCssShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCssShapesStage.
(window.benchmarkClient.create): Creates a benchmark of type BouncingCssShapesBenchmark.
* Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: Added.
(BouncingCssImage): A sub class of BouncingParticle for animating CSS images.
(BouncingCssImage.prototype._move): Move the particle to a new location. Apply transform since it does not require layout.
(BouncingCssImage.prototype.animate): Rotates and moves the shape to a new location.
(BouncingCssImagesStage): A sub class of BouncingParticlesStage for animating CSS images.
(BouncingCssImagesStage.prototype.createParticle): Creates a particle of type BouncingCssImage.
(BouncingCssImagesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.
(BouncingCssImagesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS images.
(BouncingCssImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCssImagesStage.
(window.benchmarkClient.create): Creates a benchmark of type BouncingCssImagesBenchmark.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Added.
(BouncingCanvasParticle): A base sub-class of BouncingParticle for animating canvas particles.
(BouncingCanvasParticle.prototype._applyRotation): Apply the particle rotation-around-center transform to the canvas context.
(BouncingCanvasParticle.prototype._applyClipping): Apply the particle clipping to the canvas context.
(BouncingCanvasParticle.prototype._draw): A non-implemented version of the drawing function.
(BouncingCanvasParticle.prototype.animate): Carries out all the steps to redraw the canvas particle.
(BouncingCanvasParticlesStage): A base sub-class of BouncingParticlesStage for animating canvas particles.
(BouncingCanvasParticlesAnimator): A concrete sub-class of BouncingParticlesAnimator for animating canvas particles.
(BouncingCanvasParticlesAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
(BouncingCanvasParticlesBenchmark): A base sub-class of StageBenchmark for animating canvas particles.
(BouncingCanvasParticlesBenchmark.prototype.createAnimator): Creates the canvas particles animator.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Added.
(BouncingCanvasShape): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
(BouncingCanvasShape.prototype._applyFill): Sets the fillStyle in the canvas context.
(BouncingCanvasShape.prototype._drawShape): Carries out the actual drawing.
(BouncingCanvasShape.prototype._draw): Carries out all the steps to draw the shape.
(BouncingCanvasShapesStage): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
(BouncingCanvasShapesStage.prototype.createParticle): Creates a particle of type BouncingCanvasShape.
(BouncingCanvasShapesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas shapes.
(BouncingCanvasShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasShapesStage.
(window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasShapesBenchmark.
* Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Added.
(BouncingCanvasImage): A concrete sub-class of BouncingCanvasParticle for animating canvas images.
(BouncingCanvasImage.prototype._draw): Draws an image on the context of a canvas.
(BouncingCanvasImagesStage): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
(BouncingCanvasImagesStage.prototype.createParticle): Creates a particle of type BouncingCanvasImage.
(BouncingCanvasImagesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
(BouncingCanvasImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasImagesStage.
(window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasImagesBenchmark.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js: Added.
(BouncingSvgParticle): A base sub-class of BouncingParticle for animating SVG particles.
(BouncingSvgParticle.prototype._applyClipping): Apply the particle clipping by setting the 'clip-path' attribute of the SVGElement.
(BouncingSvgParticle.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
(BouncingSvgParticle.prototype.animate): Rotates and moves the shape to a new location.
(BouncingSvgParticlesStage): A sub class of BouncingParticlesStage for animating SVGElements.
(BouncingSvgParticlesStage.prototype._createDefs): Creates an SVGDefsElement.
(BouncingSvgParticlesStage.prototype._ensureDefsIsCreated): Ensures there is only one SVGDefsElement is created.
(BouncingSvgParticlesStage.prototype._createClipStar): Creates an SVGClipPathElement and sets its 'd' attribute to a star like shape.
(BouncingSvgParticlesStage.prototype.ensureClipStarIsCreated): Ensure there is only one star SVGClipPathElement is created.
(BouncingSvgParticlesStage.prototype.particleWillBeRemoved): Remove the corresponding element form the parent children list.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Added.
(BouncingSvgShape): A concrete sub-class of BouncingSVGParticle for animating SVG shapes.
(BouncingSvgShape.prototype._createShape): Creates an SVG shape.
(BouncingSvgShape.prototype._applyFill): Applies the selected fill style to the SVG shape.
(BouncingSvgShapesStage): A concrete sub-class of BouncingSvgParticlesStage for animating SVG shapes.
(BouncingSvgShapesStage.prototype.createGradient): Creates an SVGLinearGradientElement.
(BouncingSvgShapesStage.prototype.createParticle): Creates a particle of type BouncingSvgShape.
(BouncingSvgShapesStage.prototype.particleWillBeRemoved): Ensures the attached SVGLinearGradientElement is removed from the SVGDefsElement.
(BouncingSvgShapesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
(BouncingSvgShapesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgShapesStage.
(window.benchmarkClient.create): Creates a benchmark of type BouncingSvgShapesBenchmark.
* Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: Added.
(BouncingSvgImage): A concrete sub-class of BouncingSVGParticle for animating SVG images.
(BouncingSvgImagesStage): A concrete sub-class of BouncingSVGParticlesBenchmark for animating SVG images.
(BouncingSvgImagesStage.prototype.createParticle): Creates a particle of type BouncingSvgImage.
(BouncingSvgImagesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
(BouncingSvgImagesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgImagesStage.
(window.benchmarkClient.create): Creates a benchmark of type BouncingSvgImagesBenchmark.
* Animometer/tests/examples: Added.
* Animometer/tests/examples/canvas-electrons.html: Added.
* Animometer/tests/examples/canvas-stars.html: Added.
Examples test pages.
* Animometer/tests/examples/resources: Added.
* Animometer/tests/examples/resources/canvas-electrons.js: Added.
(CanvasElectron): An object which draws and animate a electron object on a canvas stage.
(CanvasElectron.prototype._draw): Draws the electron object.
(CanvasElectron.prototype.animate): Animates the electron object.
(CanvasElectronsStage): A concrete sub-class of Stage for animating electrons.
(CanvasElectronsStage.prototype.tune): Changes the test by adding or removing elements.
(CanvasElectronsStage.prototype.animate): Animates the test elements.
(CanvasElectronsAnimator): A concrete sub-class of StageAnimator for animating canvas electrons.
(CanvasElectronsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
(CanvasElectronsBenchmark): A concrete sub-class of StageBenchmark for animating electrons.
(CanvasElectronsBenchmark.prototype.createStage): Creates a stage of CanvasElectronsStage.
(CanvasElectronsBenchmark.prototype.createAnimator): Creates an animator of type CanvasElectronsAnimator.
(window.benchmarkClient.create): Creates a benchmark of type CanvasElectronsBenchmark.
* Animometer/tests/examples/resources/canvas-stars.js: Added.
(CanvasStar): An object which draws and animate a star object on a canvas stage.
(CanvasStar.prototype._draw): Draws the star object.
(CanvasStar.prototype.animate): Animates the star object.
(CanvasStarsStage): A concrete sub-class of Stage for animating stars.
(CanvasStarsStage.prototype.tune): Changes the test by adding or removing elements.
(CanvasStarsStage.prototype.animate): Animates the test elements.
(CanvasStarsAnimator): A concrete sub-class of StageAnimator for animating canvas stars.
(CanvasStarsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
(CanvasStarsBenchmark): A concrete sub-class of Benchmark for animating stars.
(CanvasStarsBenchmark.prototype.createStage): Creates a stage of CanvasStarsStage.
(CanvasStarsBenchmark.prototype.createAnimator): Creates an animator of type CanvasStarsAnimator.
(window.benchmarkClient.create): Creates a benchmark of type CanvasStarsBenchmark.
* Animometer/tests/resources: Added.
This directory includes the script which is required to run an adaptive
graphics benchmark. From an empty test page, the set of classes in this
directory are responsible for measuring the current frame rate and
changing the test to reach a desired FPS. It keeps asking the test page
to tune itself by a certain value to increase or decrease the frame rate.
It's also responsible for sampling the test state and the corresponding
frame rate.
* Animometer/tests/resources/main.js: Added.
(BenchmarkState): Tracks the state of the benchmark test.
(BenchmarkState.prototype._timeOffset): Returns the timeOffset of a stage.
(BenchmarkState.prototype._message): Returns the message of a stage.
(BenchmarkState.prototype.update): Sets the currentTimeOffset to a new value.
(BenchmarkState.prototype.samplingTimeOffset): Returns the timeOffset of the sampling stage.
(BenchmarkState.prototype.currentStage): Returns the current stage of the benchmark.
(BenchmarkState.prototype.currentMessage): Returns the message of the current stage and timeOffset.
(BenchmarkState.prototype.currentProgress): Returns a percentage of how much the benchmark is running.
(Animator): Manages animating the test.
(Animator.prototype.start): Called if animating using setInterval is requested.
(Animator.prototype.timeDelta): Returns the current timeDelta
(Animator.prototype.animate): Manages the test animation.
(Animator.prototype.animateLoop): Called if animating using requestAnimationFrame is requested.
(Benchmark): Manages running the test benchmark and recording the sampled data.
(Benchmark.prototype.start): Starts the benchmark.
(Benchmark.prototype.update): Called from the animator.animate() to change the complexity of the test.
(Benchmark.prototype.record): Shows the current (not final) results of the benchmark.
(Benchmark.prototype.resolveWhenFinished): Spins until the benchmark is finished and returns its results.
(Benchmark.prototype.run): Starts the test, runs it, waits until it is finished and return its results.
(window.runBenchmark): Called from the benchmark runner through the suite controller run-callback.
* Animometer/tests/resources/math.js: Added.
(Matrix): A matrix object.
(Vector3): A vector of size 3 object.
(Matrix3): A matrix of size 3x3 object.
(PIDController): Closed-loop controller for a set-point y.
(PIDController.prototype._sat): Limits the output to a certain range.
(PIDController.prototype.tune): Given the current output of a system, it produces a new pid value for tuning it.
(KalmanEstimator): Implement Kalman filter to get an estimate for a sampled data point.
(KalmanEstimator.prototype.estimate): Returns an estimate for for a sampled data point.
* Animometer/tests/resources/utilities.js: Added.
(window.Utilities._parse): Given a separator character, it pareses a string to a set of <key, value> pairs.
(window.Utilities.parseParameters): Parses a test parameters.
(window.Utilities.parseArguments): Parses a tag arguments.
(window.Utilities.extendObject): Adds the attributes and their values of an object to another object.
(window.Utilities.copyObject): Copies the attributes and their values of an object to a new object.
(window.Utilities.mergeObjects): Copies the attributes and their values of two objects to a new object.
(window.Utilities.createSvgElement): Creates an SVGElement given its name and its attributes.
* Animometer/tests/resources/stage.css: Added.
* Animometer/tests/resources/stage.js: Added.
(Rotater): Manages rotating an angle within a fixed time interval.
(Rotater.prototype.get interval): Returns the time interval which is required to rotate 360 degrees.
(Rotater.prototype.next): Moves the current time by a delta.
(Rotater.prototype.degree): Returns the current rotating degree.
(Rotater.prototype.rotateZ): Returns CSS formatted transform rotateZ() string for the current degree.
(Rotater.prototype.rotate): Returns SVG formatted transform rotate() string for the current degree.
(Stage): A base class for managing the test complexity and test animation.
(Stage.prototype.get size): Returns the size of the stage excluding the CSS padding.
(Stage.prototype.random): Returns a random float.
(Stage.prototype.randomInt): Returns a random integer.
(Stage.prototype.randomPosition): Returns a random position.
(Stage.prototype.randomSquareSize): Returns a square size.
(Stage.prototype.randomVelocity): Returns a random velocity.
(Stage.prototype.randomAngle): Returns a random angle.
(Stage.prototype.randomColor): Returns a random color not too dark and not too light.
(Stage.prototype.randomRotater): Creates a random rotater. Its velocity depends on choosing a random rotation time interval.
(Stage.prototype.tune): A not-implemented version of this function.
(Stage.prototype.animate): A not-implemented version of this function.
(Stage.prototype.clear): Clears the stage from all its animation elements.
(StageAnimator): A base class for the stage-based animators.
(StageAnimator.prototype.animate): Calls Animator.animate() which updates the test page and then calls Stage.animate() to force redraw.
(StageBenchmark): A base class for the stage-based benchmarks.
(StageBenchmark.prototype.createStage): Creates the default stage.
(StageBenchmark.prototype.createAnimator): Creates the default animator.
(StageBenchmark.prototype.tune): Delegates the call to stage.
(StageBenchmark.prototype.clear): Delegates the call to stage.
(StageBenchmark.prototype.showResults): Shows the results/progress through its recordTable and progressBar.
* Animometer/tests/resources/yin-yang.png: Added.
* Animometer/tests/resources/yin-yang.svg: Added.
These images are shared among all the tests.
* Animometer/tests/template: Added.
* Animometer/tests/template/resources: Added.
This directory includes template tests which do nothing. They can be used
to author new tests. Animated items can be created, moved and redrawn by
removing the TODO comments in the script files and writing actual code.
* Animometer/tests/template/template-css.html: Added.
* Animometer/tests/template/template-canvas.html: Added.
* Animometer/tests/template/template-svg.html: Added.
Template test pages. They can be used as they are. CSS attributes or hidden
elements can be added to these derived test pages if needed.
* Animometer/tests/template/resources/template-css.js: Added.
(TemplateCssStage): A stage to create and animate HTMLElements.
(TemplateCssStage.prototype.tune): Changes the test by adding or removing elements.
(TemplateCssStage.prototype.animate): Animates the test elements.
(TemplateCssBenchmark):
(TemplateCssBenchmark.prototype.createStage): Creates the test stage.
(window.benchmarkClient.create): Creates a benchmark of type TemplateCssBenchmark.
* Animometer/tests/template/resources/template-canvas.js: Added.
(TemplateCanvasObject):
(TemplateCanvasObject.prototype._draw): Draws the objects on the canvas context.
(TemplateCanvasObject.prototype.animate): Moves and redraws the object.
(TemplateCanvasStage): A stage to create and animate drawing elements.
(TemplateCanvasStage.prototype.tune): hanges the test by adding or removing elements.
(TemplateCanvasStage.prototype.animate): Animates the test elements.
(TemplateCanvasAnimator.prototype.animate): Starts the animation every frame.
(TemplateCanvasBenchmark):
(TemplateCanvasBenchmark.prototype.createStage): Creates a stage of type TemplateCanvasStage.
(TemplateCanvasBenchmark.prototype.createAnimator): Creates a animator of type TemplateCanvasAnimator.
(window.benchmarkClient.create): Creates a benchmark of type TemplateCanvasBenchmark.
* Animometer/tests/template/resources/template-svg.js: Added.
(TemplateSvgStage): A stage to create and animate SVGElements.
(TemplateSvgStage.prototype.tune): Changes the test by adding or removing elements.
(TemplateSvgStage.prototype.animate): Animates the test elements.
(TemplateSvgBenchmark.prototype.createStage): Creates a stage of type TemplateSvgStage.
(window.benchmarkClient.create): Creates a benchmark of type TemplateSvgBenchmark.
* Animometer/tests/text: Added.
* Animometer/tests/text/resources: Added.
This directory includes the text animating tests which currently runs
on CSS stage only.
* Animometer/tests/text/layering-text.html: Added.
Text test page.
* Animometer/tests/text/resources/layering-text.js: Added.
(LayeringTextStage): Represents the container of all the stacked text layers.
(LayeringTextStage.parseTextItem): Parses a textItem which may be an opening tag, a closing tag or a self-closing tag.
(LayeringTextStage.isOpeningTextItem): Returns true if the textItem is an opening tag e.g. '<ol>'.
(LayeringTextStage.isClosingTextItem): Returns true if the textItem is an closing tag e.g. '</ol>.
(LayeringTextStage.textItemsFlags.LayeringTextStage.textItems.map): Calculates and stores isOpening and isClosing flags for each textItem.
(LayeringTextStage.isColorableTextItem): Returns true if the textItem is self-closing tag e.g. '<p>...</p>'.
(LayeringTextStage.isInsertableTextItem): Returns true if the textItems causes a new element to be added to the text layers.
(LayeringTextStage.colorableTextItems.LayeringTextStage.textItemsFlags.filter): Number of colorable textItems.
(LayeringTextStage.insertableTextItems.LayeringTextStage.textItemsFlags.filter): Number of insertable textItems.
(LayeringTextStage.colorIndexToTextElementIndex): Maps from colorIndex [0..colorableTextItems-1] to textElementIndex [0..insertableTextItems-1].
(LayeringTextStage.prototype._nextTextItem): Moves the _textItemIndex one step forward in a loop [0..LayeringTextStage.textItems.length-1].
(LayeringTextStage.prototype._previousTextItem): Moves the _textItemIndex one step backward in a loop.
(LayeringTextStage.prototype._pushTextElement): Creates a new textItemElement and adds it to the topmost container <div>.
(LayeringTextStage.prototype._popTextElement): Removes the last textItemElement from the topmost container <div>.
(LayeringTextStage.prototype._colorTextItem): Changes the background color of a single colorable textElement. The index advances in a circle [0..colorableTextItems-1].
(LayeringTextStage.prototype.animate): Changes the background color and the text color of the textElements such that a redraw is enforced.
(LayeringTextStage.prototype.tune): Adds or removes textElements to the stage.
(LayeringTextBenchmark): Runs the benchmark for the layering text test.
(LayeringTextBenchmark.prototype.createStage): Creates a stage of type LayeringTextStage.
(window.benchmarkClient.create): Creates a benchmark of type LayeringTextBenchmark.
2015-10-02 Said Abou-Hallawa <sabouhallawa@apple.com>
Add shared code for a new a graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=149691
Reviewed by Ryosuke Niwa.
This set of classes will be shared and used by the tests and the runner
of a new graphics benchmark.
* Animometer/resources: Added.
* Animometer/resources/algorithm.js: Added.
(Array.prototype.swap): Swaps two elements in an array.
(Heap): Binary Min/Max Heap object
(Heap.prototype._parentIndex): Given the child node index, it returns the parent index.
(Heap.prototype._leftIndex): Given the parent node index, it returns the left node index.
(Heap.prototype._rightIndex): Given the parent node index, it returns the right node index.
(Heap.prototype._childIndex): Given the parent node index, it returns the child index that may violate the heap property.
(Heap.prototype.init): Initializes the heap state.
(Heap.prototype.top): Returns the value stored at the top of the heap.
(Heap.prototype.push): Pushes a new node at the top of the heap.
(Heap.prototype.pop): Extracts the top node of the heap.
(Heap.prototype._bubble): Fixes the heap property by moving upward.
(Heap.prototype._sink): Fixes the heap property by moving downward.
(Heap.prototype.str): Prints the nodes of the heap to a string.
(Heap.prototype.values): Returns the last "size" heap elements values.
(Algorithm.createMinHeap): Creates a size-bounded min-heap object.
(Algorithm.createMaxHeap): Creates a size-bounded max-heap object.
* Animometer/resources/extensions.js: Added.
(Point): Point object but can be used as size also.
(Point.pointOnCircle): Given, the radius of the circle and the angle of the point, it returns a point object.
(Point.pointOnEllipse): Given, the radiuses of the ellipse and the angle of the point, it returns a point object.
(Point.prototype.get width): Should be called when the point is used as size.
(Point.prototype.get height): Should be called when the point is used as size.
(Point.prototype.get center): Should be called when the point is used as size.
(Point.prototype.add): Returns a new point = this + other.
(Point.prototype.subtract): Returns a new point = this - other.
(Point.prototype.multiply): Returns a new point = this * other.
(Point.prototype.move): Moves the point in a given direction, velocity, time period.
(Insets): Represents borders of a container.
(Insets.prototype.get width): Returns left + right.
(Insets.prototype.get height): Returns top + bottom.
(SimplePromise):
(SimplePromise.prototype.then):
(SimplePromise.prototype.resolve):
Moved from Animometer/runner/resources/benchmark-runner.js since tests also need it.
(Options): Benchmark running options as they are set by the user.
(ProgressBar): Manages a progress bar element. The progress bar is divided into equal length ranges.
(ProgressBar.prototype._progressToPercent): Converts the progress into a percentage.
(ProgressBar.prototype.incRange): Moves to the next range (a range is the running time of a single test).
(ProgressBar.prototype.setPos): Draws the current progress in the current range.
(RecordTable): Shows the results of running a benchmark in a tabular form.
(RecordTable.prototype.clear): Clears the results table.
(RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
(RecordTable.prototype._showHeader): Shows the table header titles.
(RecordTable.prototype._showEmpty): Shows an empty table cell.
(RecordTable.prototype._showValue): Shows a number value in the results table.
(RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
(RecordTable.prototype._showTest): Shows the results of a single test.
(RecordTable.prototype._showSuite): Shows the results of a single suite.
(RecordTable.prototype.showRecord): Shows a single iteration for a single test.
(RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.
* Animometer/resources/sampler.js: Added.
(Statistics.sampleMean): Returns the sample mean.
(Statistics.unbiasedSampleStandardDeviation): Returns the unbiased sample variance (i.e. with Bessel's correction)
(Statistics.geometricMean): Returns the geometric mean.
(Experiment): Represents a sampling experiment.
(Experiment.prototype._init): Called when the object is created and when startSampling() is called.
(Experiment.prototype.startSampling): Called after warmup period. Restarts collecting sampled data points.
(Experiment.prototype.sample): Add a new data point.
(Experiment.prototype.mean): Returns the sample mean for the current sampled data points.
(Experiment.prototype.standardDeviation): Returns the sample standard deviation for the current sampled data points.
(Experiment.prototype.percentage): Returns the percentage of the standard deviation divided to the mean.
(Experiment.prototype.confidenceIntervalDelta): Calculates the confidence delta for the current sampled data given a confidence level.
(Experiment.prototype.concern): Returns the average of the worst given percentage from the sampled data.
(Experiment.prototype.score): Returns a score for the sampled data. It is the geometric mean of sampleMean and concern.
(Sampler): Represents a compound experiment. It manages sampling multiple data points at the same time offset.
(Sampler.prototype.startSampling): Called after warming up period. Restarts collecting sampled data points.
(Sampler.prototype.sample): Add a new data vector at a given time offset.
2015-10-02 Said Abou-Hallawa <sabouhallawa@apple.com>
Add the test runner for a new a graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=149683
Reviewed by Ryosuke Niwa.
The test runner collects the selected test suites and the running options
from its home page. It loops through all the tests, runs them and collects
their running results. At the end, it shows summary results and a final
score. It can also show a chart for a test sampled data.
* Animometer: Added.
* Animometer/runner: Added.
* Animometer/runner/resources: Added.
* Animometer/runner/animometer.html: Added.
* Animometer/runner/resources/animometer.css: Added.
The benchmark runner page and css.
* Animometer/runner/resources/animometer.js: Added.
(window.benchmarkRunnerClient.willAddTestFrame): Called after the test <iframe> is created.
(window.benchmarkRunnerClient.didRunTest): Called after running a test is finished.
(window.benchmarkRunnerClient.willStartFirstIteration): Called at the beginning before running any test.
(window.benchmarkRunnerClient.didRunSuites): Called after running all tests of a suite.
(window.benchmarkRunnerClient.didFinishLastIteration): Called after running the last test.
(showSection): Shows a section in the animometer.html page.
(startTest): Called when the "Start Test" button is clicked.
(showResults): Called after finishing all the tests.
(showGraph): Called when "Click..." button in the "Samples" column of the results table is clicked
* Animometer/runner/resources/benchmark-runner.js: Copied from PerformanceTests/Speedometer/resources/benchmark-runner.js.
(BenchmarkRunnerState): Tracks the current running <suite, test>
(BenchmarkRunnerState.prototype.currentSuite): Returns the current running suite.
(BenchmarkRunnerState.prototype.currentTest): Returns the current running test.
(BenchmarkRunnerState.prototype.isFirstTest): Returns true if we are running the first test in the current suite.
(BenchmarkRunnerState.prototype.next): Advances to the next test.
(BenchmarkRunnerState.prototype.prepareCurrentTest): Creates a new <iframe> and waits for it to load a test.
(BenchmarkRunner): Manages running the tests and communicating with the benchmarkRunnerClient.
(BenchmarkRunner.prototype.waitForElement): Waits for an element to be created.
(BenchmarkRunner.prototype._appendFrame): Creates a new <iframe> element.
(BenchmarkRunner.prototype._removeFrame): Removed the current <iframe> element.
(BenchmarkRunner.prototype._runTestAndRecordResults): Runs the current test and saves its results.
(BenchmarkRunner.prototype.step): Either runs the current test if there is or start a new iteration.
(BenchmarkRunner.prototype.runAllSteps): Loops to run all the tests and move to the next iteration.
(this._runNextIteration): Starts a new iteration or show the results.
(BenchmarkRunner.prototype.runMultipleIterations): Loops to run all the iterations and show the results
(BenchmarkRunner.prototype._finalize): Finalizes the current iteration and starts a new one.
(SimplePromise): Deleted.
(SimplePromise.prototype.then): Deleted.
(SimplePromise.prototype.resolve): Deleted.
(BenchmarkTestStep): Deleted.
(Fibonacci): Deleted.
SimplePromise was moved t Animometer/resources/extensions.js because it is used by the runner and the tests.
(BenchmarkRunner.prototype._waitAndWarmUp): Deleted.
(BenchmarkRunner.prototype._runTest): Deleted.
(BenchmarkState.prototype.currentSuite): Deleted.
(BenchmarkState.prototype.currentTest): Deleted.
(BenchmarkState.prototype.next): Deleted.
(BenchmarkState.prototype.isFirstTest): Deleted.
(BenchmarkState.prototype.prepareCurrentSuite): Deleted.
BenchmarkState was renamed to BenchmarkRunnerState to not be confused with the tests BenchmarkState.
* Animometer/runner/resources/d3.min.js: Copied from Websites/perf.webkit.org/public/v2/js/d3/d3.min.js.
Needed for drawing charts for the sampled scores and frame rates.
* Animometer/runner/resources/graph.js: Added.
(graph): Draws a chart for a test sampled data. It shows two y-axes: one for the animated items and the second for FPS.
* Skipped: Skip the Animometer benchmark for now.
2015-08-27 Csaba Osztrogonác <ossy@webkit.org>
[EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
https://bugs.webkit.org/show_bug.cgi?id=148470
Unreviewed gardening, skip the hanging test to make the performance bot work.
* Skipped:
2015-08-17 Chris Dumez <cdumez@apple.com>
Add performance tests for traversal of collections returned by getElementsByClassName() / getElementsByTagName()
https://bugs.webkit.org/show_bug.cgi?id=148080
Reviewed by Antti Koivisto.
Add performance tests for traversal of *uncached* collections returned
by getElementsByClassName() / getElementsByTagName(). These methods
will soon be updated to return an HTMLCollection instead of a
NodeList and we need to make sure we don't regress performance in the
process.
* DOM/get-elements-by-class-name-traversal-uncached.html: Added.
* DOM/get-elements-by-tag-name-traversal-uncached.html: Added.
2015-08-14 Chris Dumez <cdumez@apple.com>
Add performance tests for NodeList and HTMLCollection traversal
https://bugs.webkit.org/show_bug.cgi?id=148043
Reviewed by Gavin Barraclough.
Add performance tests for NodeList and HTMLCollection traversal.
Ideally, those 2 tests should be as fast. However, due to inefficiencies
in our HTMLCollection bindings code, the HTMLCollection tests is ~30%
slower. This will be addressed in the near future.
* Bindings/childNodes-traversal.html: Added.
* Bindings/children-traversal.html: Added.
2015-08-05 Myles C. Maxfield <mmaxfield@apple.com>
Add a second font-fallback performance test
https://bugs.webkit.org/show_bug.cgi?id=147692
Reviewed by Ryosuke Niwa.
This test is smaller, but has more realistic content. Also, it uses the "lang" attribute.
* Layout/font-fallback-2.html: Added.
* Layout/resources/font-fallback-2.html: Added.
2015-07-13 Filip Pizlo <fpizlo@apple.com>
Update JetStream version number to 1.1.
Rubber stamped by Ryosuke Niwa.
* JetStream/create.rb:
2015-06-30 Filip Pizlo <fpizlo@apple.com>
Update the JetStream documentation to reflect the recent changes
https://bugs.webkit.org/show_bug.cgi?id=146474
Reviewed by Geoffrey Garen.
* JetStream/create.rb: Bump the version.
* JetStream/in-depth-TEMPLATE.html: Add cdjs documentation. Remove cordic documentation. Change documentation for splay and mandreel.
2015-06-26 Filip Pizlo <fpizlo@apple.com>
[JetStream] Raise the percentile of mandreel-latency and splay-latency
https://bugs.webkit.org/show_bug.cgi?id=146378
Reviewed by Mark Lam.
The current percentile is 95%. When I looked at the sample lists in our GC, it was
clear that the worst 5% samples completely amortize our GC pauses. Our GC pauses can
be quite bad. Clearly, splay-latency is meant to test whether we have an incremental
GC that ensures that you don't have bad worst-case pauses. But 95% is too small,
because it doesn't really capture those pauses. Raising the percentile to above 99%
appears to do the trick. 99.5% or more seems like a good bet. The trade-off there is
just that if we set it too high, then we won't have enough statistics. Doing this very
clearly rewards GCs that are incremental, and punishes GCs that aren't (like ours).
That's what we want, since in the future we want to use this test to guide any
improvements to the worst-case performance of our GC.
The way that the percentile is selected will also affect mandreel-latency. That's a
good thing, because 95% is probably too low for that test as well. That test ends up
with >10k samples. The goal of using 95% in the first place was to get enough samples
to have a stable average. But if we have >10k samples, we can push that percentile up
much higher and still get good statistics while achieving the effect we want - i.e.
getting the worst case.
I don't think that we need to do the same thing for cdjs. That test only takes 200
samples, so 95% means we report the average of the worst 10 samples. That's probably
good enough.
* JetStream/Octane2/base.js: Raise the percentile as described above.
(BenchmarkSuite.prototype.RunSingleBenchmark):
* JetStream/Reference.js: Tweak the reference times to bring the latency tests closer to 100ish on my machine.
* JetStream/create.rb: Bump the version.
2015-06-19 Filip Pizlo <fpizlo@apple.com>
Run CDjs as part of JSC stress testing
https://bugs.webkit.org/show_bug.cgi?id=146174
Reviewed by Geoffrey Garen.
* 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.
* JetStream/cdjs/main.js: Mark this as a slow test.
* JetStream/create.rb: Don't copy the JSC stress tests artifacts into the JetStream bundle.
2015-06-19 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix a small indentation goof.
* JetStream/cdjs/motion.js:
(Motion.prototype.findIntersection):
2015-06-19 Filip Pizlo <fpizlo@apple.com>
JetStream should include a JavaScript version of the CDx real-time benchmark
https://bugs.webkit.org/show_bug.cgi?id=146156
Reviewed by Geoffrey Garen.
This adds a JavaScript port of the CDx real-time benchmark to JetStream, and retires
the cordic test because it was previously the smallest and probably least interesting.
The new test, "cdjs", is mostly a faithful rewrite of the Java code into JavaScript.
I got the Java code from https://www.cs.purdue.edu/sss/projects/cdx/.
There are some differences:
- It uses RedBlackTree's for all sets and maps rather than hashtables. This is clearly
more in the spirit of real-time than the CDx benchmark. FWIW, CDx used to use trees
and I don't know why that changed in the latest version.
- CDjs doesn't attempt to avoid memory allocations, unlike the real-time Java version.
I wrote the code that I wanted to write for aesthetics, rather than the code that I
would have written if I tried to write the fastest code possible. Again, I believe
that this is in the spirit of CDj - it's meant to test what would happen if you wrote
real-timey stuff in a high level language and actually took advantage of that
language to be more productive.
The test score reflects the average latency of the worst 10 samples out of 200 samples.
The simulation uses 1000 aircraft, flying along paths that result in some detected
collisions every once in a while. The benchmark validates its results by checking the
total number of collisions detected.
Apart from the integration into the JetStream harness, the CDjs directory contains a
fully self-contained benchmark that could be run either in the jsc shell or in browser.
This new code uses the same 3-clause BSD license as the Purdue code, and gives
attribution to Purdue in almost all files. I believe that is appropriate since I wrote
most of the JS files by looking at the Purdue Java code and trascribing to JavaScript.
In some cases, I even copy-pasted the Java code, like the complicated math for
four-dimensional intersections and voxel hashing.
* JetStream/CDjsSetup.js: Added.
* JetStream/Octane2Setup.js:
* JetStream/Reference.js:
* JetStream/cdjs: Added.
* JetStream/cdjs/benchmark.js: Added.
(benchmark):
* JetStream/cdjs/call_sign.js: Added.
(CallSign):
(CallSign.prototype.compareTo):
(CallSign.prototype.toString):
* JetStream/cdjs/collision.js: Added.
(Collision):
(Collision.prototype.toString):
* JetStream/cdjs/collision_detector.js: Added.
(CollisionDetector):
(CollisionDetector.prototype.handleNewFrame.get for):
(CollisionDetector.prototype.handleNewFrame):
* JetStream/cdjs/constants.js: Added.
* JetStream/cdjs/main.html: Added.
* JetStream/cdjs/main.js: Added.
* JetStream/cdjs/motion.js: Added.
(Motion):
(Motion.prototype.toString):
(Motion.prototype.delta):
(Motion.prototype.findIntersection):
* JetStream/cdjs/motion_test.js: Added.
(checkDoesIntersect):
(checkDoesNotIntersect):
(makeMotion):
* JetStream/cdjs/red_black_tree.js: Added.
(RedBlackTree):
(RedBlackTree.):
* JetStream/cdjs/red_black_tree_test.js: Added.
(test):
(test.):
* JetStream/cdjs/reduce_collision_set.js: Added.
(drawMotionOnVoxelMap):
(drawMotionOnVoxelMap.):
(.get reduceCollisionSet):
* JetStream/cdjs/reduce_collision_set_test.js: Added.
(makeMotion):
(keys):
(test):
* JetStream/cdjs/simulator.js: Added.
(Simulator):
(Simulator.prototype.simulate):
* JetStream/cdjs/util.js: Added.
(compareNumbers):
(averageAbovePercentile):
(currentTime):
(else.currentTime):
* JetStream/cdjs/vector_2d.js: Added.
(Vector2D):
(Vector2D.prototype.plus):
(Vector2D.prototype.minus):
(Vector2D.prototype.toString):
(Vector2D.prototype.compareTo):
* JetStream/cdjs/vector_3d.js: Added.
(Vector3D):
(Vector3D.prototype.plus):
(Vector3D.prototype.minus):
(Vector3D.prototype.dot):
(Vector3D.prototype.squaredMagnitude):
(Vector3D.prototype.magnitude):
(Vector3D.prototype.times):
(Vector3D.prototype.as2D):
(Vector3D.prototype.toString):
* JetStream/create.rb:
* JetStream/index-TEMPLATE.html:
* JetStream/sunspider/cordic.js: Removed.
2015-06-17 Javier Fernandez <jfernandez@igalia.com>
[CSS Grid Layout] We should add performance tests for stretching logic
https://bugs.webkit.org/show_bug.cgi?id=146063
Reviewed by Sergio Villar Senin.
Added a new performance test for Grid Layout to ensure there are no
regressions in the stretching alignment logic.
* Layout/fixed-grid-lots-of-stretched-data.html: Added.
2015-06-17 Javier Fernandez <jfernandez@igalia.com>
[CSS Grid Layout] Performance tests are using the old syntax
https://bugs.webkit.org/show_bug.cgi?id=146061
Reviewed by Sergio Villar Senin.
Adapted tests to the new grid tracks definition syntax.
* Layout/auto-grid-lots-of-data.html:
* Layout/fixed-grid-lots-of-data.html:
2015-06-08 Filip Pizlo <fpizlo@apple.com>
JetStream should have a more rational story for jitter-oriented latency tests
https://bugs.webkit.org/show_bug.cgi?id=145762
Reviewed by Geoffrey Garen.
JetStream has some latency tests that are meant to measure jitter. Prior to this change, they
did this by computing the RMS. But the RMS is a pretty bad metric. The thing that it rewards
isn't really the thing that you'd want your browser to do. These RMS-based tests involve taking
the geomean of the RMS of some samples and the sample average. The lower the geomean, the better
(in the JetStream harness we then invert the scores so that higher is better, but let's ignore
that for this discussion and assume that lower is better). Here's an example of how this can go
bad. A browser that always computes a task in some horribly long time (say, 1000ms) but never
varies that time will perform better than a browser that usually computes the task super quickly
(say, 10ms) and sometimes just a little bit less quickly (say, 15ms). The former browser will
have an RMS of 0 and an average of 1000. The latter will have a RMS somewhere around 3.5 and an
average of 12.5 (assuming equal probability of 10ms and 15ms). The geomean of (0, 1000) is 0.
The geomean of (3.5, 12.5) is 6.6. Lower is better, so the former browser scores higher - even
though it's obviously never better to have a browser always complete a task in 1000ms when a
different browser can do it in 15ms in the worst case.
JetStream should not have this pathology. The right way of avoiding it is to replace RMS with
some other metric of how bad things get. A good metric is the average of the worst percentile.
The worst 1% or the worst 5% would be good things to average. This will catch cases where the VM
jittered due to JIT or GC, but it never have the pathology that we end up giving the better score
to a VM whose best case is worst than another VM's worst case.
For now, this change uses the highest samples above the 95% percentile. I'm not yet sure if that
is the best thing - it might include too many scores that are around the best-case performance -
but it's certainly better than RMS and it might be good enough to keep. But because of that
uncertainty, I'm setting the version to be "1.1-alpha1" to indicate that we aren't ready to
release this yet.
* JetStream/Octane2/base.js:
(.this.Setup.setup.setup):
(.this.TearDown.tearDown.tearDown):
(BenchmarkSuite.GeometricMeanTime):
(BenchmarkSuite.AverageAbovePercentile):
(BenchmarkSuite.GeometricMeanLatency):
(BenchmarkSuite.prototype.NotifyStep):
(BenchmarkSuite.prototype.RunSingleBenchmark):
* JetStream/Octane2/mandreel.js:
(setupMandreel):
(updateMandreelStats):
(startMandreelTimer):
(latencyMandreel):
(tearDownMandreel):
(RMSMandreel): Deleted.
* JetStream/Octane2/splay.js:
(GenerateKey):
(SplayUpdateStats):
(InsertNewNode):
(SplayTearDown):
(SplayRMS): Deleted.
* JetStream/create.rb:
2015-06-03 Zalan Bujtas <zalan@apple.com>
Skip Dromaeo/jslib-modify-prototype.html for now.
Unreviewed gardening.
* Skipped:
2015-05-04 Filip Pizlo <fpizlo@apple.com>
Large array shouldn't be slow
https://bugs.webkit.org/show_bug.cgi?id=144617
Reviewed by Geoffrey Garen.
Add the hash-map benchmark to LongSpider. LongSpider was already not a perfect match of
SunSpider. It's not an official benchmark. It contains benchmarks that are relatively
long-running. So, hash-map sort of belongs here.
* LongSpider/hash-map.js: Added.
(HashMap):
(HashMap.):
(.get var):
2015-05-01 Dewei Zhu <dewei_zhu@apple.com>
Fix typo bug in Speedometer/resources/main.js
https://bugs.webkit.org/show_bug.cgi?id=144504
Reviewed by Ryosuke Niwa.
* Speedometer/resources/main.js: Fix typo.
(window.benchmarkClient.totalTimeInDisplayUnit):
2015-04-21 Ryosuke Niwa <rniwa@webkit.org>
Add JetStream to PerformanceTests
https://bugs.webkit.org/show_bug.cgi?id=144024
Rubber-stamped by Filip Pizlo.
* JetStream: Added.
* JetStream/JetStream-Logo.png: Added.
* JetStream/JetStream-Logo@2x.png: Added.
* JetStream/JetStream.css: Added.
* JetStream/JetStreamDriver.js: Added.
* JetStream/LICENSE.txt: Added.
* JetStream/LLVM-test-suite-LICENSE.txt: Added.
* JetStream/Octane: Added.
* JetStream/Octane/base.js: Added.
* JetStream/Octane/code-load.js: Added.
* JetStream/Octane2: Added.
* JetStream/Octane2/base.js: Added.
* JetStream/Octane2/box2d.js: Added.
* JetStream/Octane2/code-load.js: Added.
* JetStream/Octane2/crypto.js: Added.
* JetStream/Octane2/deltablue.js: Added.
* JetStream/Octane2/earley-boyer.js: Added.
* JetStream/Octane2/gbemu-part1.js: Added.
* JetStream/Octane2/gbemu-part2.js: Added.
* JetStream/Octane2/mandreel.js: Added.
* JetStream/Octane2/navier-stokes.js: Added.
* JetStream/Octane2/pdfjs.js: Added.
* JetStream/Octane2/raytrace.js: Added.
* JetStream/Octane2/regexp.js: Added.
* JetStream/Octane2/richards.js: Added.
* JetStream/Octane2/run.js: Added.
* JetStream/Octane2/splay.js: Added.
* JetStream/Octane2/typescript-compiler.js: Added.
* JetStream/Octane2/typescript-input.js: Added.
* JetStream/Octane2/typescript.js: Added.
* JetStream/Octane2/zlib-data.js: Added.
* JetStream/Octane2/zlib.js: Added.
* JetStream/Octane2Setup.js: Added.
* JetStream/OctaneSetup.js: Added.
* JetStream/README: Added.
* JetStream/Reference.js: Added.
* JetStream/SimpleSetup.js: Added.
* JetStream/SunSpiderSetup.js: Added.
* JetStream/Swoosh.png: Added.
* JetStream/Swoosh@2x.png: Added.
* JetStream/TestingSetup.js: Added.
* JetStream/create.rb: Added.
* JetStream/docs: Added.
* JetStream/docs/JetStreamBlogPost.html: Added.
* JetStream/in-depth-TEMPLATE.html: Added.
* JetStream/index-TEMPLATE.html: Added.
* JetStream/simple: Added.
* JetStream/simple/bigfib.cpp: Added.
* JetStream/simple/bigfib.cpp.js: Added.
* JetStream/simple/container.cpp: Added.
* JetStream/simple/container.cpp.js: Added.
* JetStream/simple/dry.c: Added.
* JetStream/simple/dry.c.js: Added.
* JetStream/simple/float-mm.c: Added.
* JetStream/simple/float-mm.c.js: Added.
* JetStream/simple/gcc-loops.cpp: Added.
* JetStream/simple/gcc-loops.cpp.js: Added.
* JetStream/simple/hash-map.js: Added.
* JetStream/simple/n-body.c: Added.
* JetStream/simple/n-body.c.js: Added.
* JetStream/simple/quicksort.c: Added.
* JetStream/simple/quicksort.c.js: Added.
* JetStream/simple/towers.c: Added.
* JetStream/simple/towers.c.js: Added.
* JetStream/sunspider: Added.
* JetStream/sunspider/3d-cube.js: Added.
* JetStream/sunspider/3d-raytrace.js: Added.
* JetStream/sunspider/base64.js: Added.
* JetStream/sunspider/cordic.js: Added.
* JetStream/sunspider/crypto-aes.js: Added.
* JetStream/sunspider/crypto-md5.js: Added.
* JetStream/sunspider/crypto-sha1.js: Added.
* JetStream/sunspider/date-format-tofte.js: Added.
* JetStream/sunspider/date-format-xparb.js: Added.
* JetStream/sunspider/n-body.js: Added.
* JetStream/sunspider/regex-dna.js: Added.
* JetStream/sunspider/tagcloud.js: Added.
2015-04-14 Said Abou-Hallawa <sabouhallawa@apple.com>
textPath layout performance improvement.
https://bugs.webkit.org/show_bug.cgi?id=141570.
Reviewed by Darin Adler.
Cut down the time spent in traversing the path for text by 50%. Instead
of traversing the path twice at a certain length: one time for the position
and the second time for the angle, we can merge these two passes into one.
* SVG/TextOnPathSimple.html: Added.
* SVG/resources/TextOnPathSimple.svg: Added.
2015-04-13 Zalan Bujtas <zalan@apple.com>
Clear up the test content when test is done.
Unreviewed fix.
* Layout/simple-line-layout-innertext.html:
2015-04-09 Zalan Bujtas <zalan@apple.com>
Simple line layout(regression): Calling innerText on RenderFlow with multiple children is slow.
https://bugs.webkit.org/show_bug.cgi?id=143554
Reviewed by Antti Koivisto.
Initialize render flow's segments only when the render flow changes in TextIterator.
The included performance test shows 6x speedup. (from ~10 runs/sec to ~60 runs/sec)
* Layout/simple-line-layout-innertext.html: Added.
2015-03-09 Chris Dumez <cdumez@apple.com>
[CG] Have Canvas use the IOSurfacePool
https://bugs.webkit.org/show_bug.cgi?id=142417
<rdar://problem/20044440>
Reviewed by Darin Adler.
Lower the number of different canvas sizes from 1000 to 100 so that
the test does not require such a huge cache size. With 100, we now
get over 90% cache hit rate with the default IOSurfacePool size.
* Canvas/reuse.html:
2015-01-28 Said Abou-Hallawa <sabouhallawa@apple.com>
Poor performance on IE's Chalkboard benchmark.
https://bugs.webkit.org/show_bug.cgi?id=140753.
Reviewed by Zalan Bujtas.
* SVG/UnderTheSeeBenchmark.html: Added
* SVG/WorldcupBenchmark.html: Added.
* SVG/resources/RenderAnimator.css: Added.
* SVG/resources/RenderAnimator.js: Added.
These are benchmarks for the SVG rendering. Mainly we want to measure how fast
the SVG rendering will be when only a small part of it is drawn.
2015-01-21 Geoffrey Garen <ggaren@apple.com>
bmalloc: support aligned allocation
https://bugs.webkit.org/show_bug.cgi?id=140732
Reviewed by Andreas Kling.
* MallocBench/MallocBench.xcodeproj/project.pbxproj:
* MallocBench/MallocBench/Benchmark.cpp:
* MallocBench/MallocBench/memalign.cpp:
(test):
(benchmark_memalign): Added a test for specific interesting memalign values.
* MallocBench/MallocBench/stress_aligned.cpp: Added.
(benchmark_stress_aligned):
* MallocBench/MallocBench/stress_aligned.h: Added. Added a stress test
for arbitrary memalign values.
2015-01-16 Geoffrey Garen <ggaren@apple.com>
bmalloc: added the tiniest bit of testing for aligned allocation
https://bugs.webkit.org/show_bug.cgi?id=140573
Reviewed by Andreas Kling.
Just good enoug to catch two bugs in a preliminary implementation.
* MallocBench/MallocBench.xcodeproj/project.pbxproj:
* MallocBench/MallocBench/Benchmark.cpp:
* MallocBench/MallocBench/mbmalloc.cpp:
* MallocBench/MallocBench/mbmalloc.h:
* MallocBench/MallocBench/memalign.cpp: Added.
(benchmark_memalign):
* MallocBench/MallocBench/memalign.h: Added.
2014-12-09 Myles C. Maxfield <mmaxfield@apple.com>
Add performance test related to font fallback
https://bugs.webkit.org/show_bug.cgi?id=139332
Reviewed by Simon Fraser.
* Layout/font-fallback.html: Added.
* Layout/resources/font-fallback.html: Added.
2014-12-08 Dean Jackson <dino@apple.com>
[Apple] Use Accelerate framework to speed-up FEGaussianBlur
https://bugs.webkit.org/show_bug.cgi?id=139310
Reviewed by Simon Fraser.
Add an interactive performance test that measures the speed of a set
of blur operations on a generated images.
* Interactive/blur-filter-timing.html: Added.
2014-11-13 Zalan Bujtas <zalan@apple.com>
Simple line layout: Add performance test case to measure line layout speed of monolithic text content.
https://bugs.webkit.org/show_bug.cgi?id=138699
Reviewed by Antti Koivisto.
* Layout/line-layout-long-long-text.html: Added.
2014-10-22 Zalan Bujtas <zalan@apple.com>
Speed up line parsing for simple line layout (part I)
https://bugs.webkit.org/show_bug.cgi?id=137275
Reviewed by Antti Koivisto.
Extend simple line layout performance test with a few more cases.
Now we've got:
<div center
<div right
<div justify
<div white-space: pre (new)
<div overflow-wrap: break-word (new)
<pre
<pre white-space: pre-wrap
<pre white-space: pre-line (new)
<pre white-space: nowrap (new)
<pre white-space: pre-wrap overflow-wrap: break-word
<div + embedded <span etc.
<div + br
* Layout/line-layout-simple.html:
2014-10-15 Andrei Bucur <abucur@adobe.com>
[Multicol] Start adding performance tests for the multi-column implementation
https://bugs.webkit.org/show_bug.cgi?id=137687
Reviewed by Mihnea Ovidenie.
This patch creates a Multicol folder inside the Layout performance tests suite. It adds only two tests
as described below.
The tests are skipped until the implementation stabilizes.
* Layout/Multicol/MulticolManyColumns.html: Added.
This test verifies the performance of the multi-column implementation with two nested multi-column
containers, the first having 20 columns and the second 10 columns.
* Layout/Multicol/MulticolNested.html: Added.
This test verifies the performance of nesting multi-column containers in the presence
of floats.
* Layout/Multicol/resources/multicol-content-many-columns.html: Added.
* Layout/Multicol/resources/multicol-content-nested.html: Added.
* Skipped: Skip the Multicol folder for now.
2014-09-29 Filip Pizlo <fpizlo@apple.com>
It should be fun and easy to run every possible JavaScript benchmark from the command line
https://bugs.webkit.org/show_bug.cgi?id=137245
Reviewed by Oliver Hunt.
This adds the scaffolding for running Octane version 2 inside run-jsc-benchmarks.
In the future we should just land Octane2 in this directory, and run-jsc-benchmarks
should be changed to point directly at this directory instead of requiring the
Octane path to be configured as part of the configuration file.
* Octane: Added.
* Octane/wrappers: Added.
* Octane/wrappers/jsc-box2d.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-boyer.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-closure.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-decrypt.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-deltablue.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-earley.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-encrypt.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-gbemu.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-jquery.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-mandreel.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-navier-stokes.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-pdfjs.js: Added.
(jscSetUp.PdfJS_window.console.log):
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-raytrace.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-regexp.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-richards.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-splay.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-typescript.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
* Octane/wrappers/jsc-zlib.js: Added.
(jscSetUp):
(jscTearDown):
(jscRun):
2014-09-28 Sungmann Cho <sungmann.cho@navercorp.com>
Fix some minor typos: psuedo -> pseudo
https://bugs.webkit.org/show_bug.cgi?id=137192
Reviewed by Alexey Proskuryakov.
* Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:
2014-09-11 Geoffrey Garen <ggaren@apple.com>
Some MallocBench refinements
https://bugs.webkit.org/show_bug.cgi?id=136750
Reviewed by Sam Weinig.
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::run): Allow for null entries in the object list so that
we can test in modes that exclude large or small allocations.
* MallocBench/MallocBench/churn.cpp:
(benchmark_churn):
* MallocBench/MallocBench/flickr.cpp:
(benchmark_flickr):
* MallocBench/MallocBench/fragment.cpp:
(benchmark_fragment_iterate):
* MallocBench/MallocBench/list.cpp:
(benchmark_list_allocate):
* MallocBench/MallocBench/reddit.cpp:
(benchmark_reddit): Updated test runtimes to weight them more equally,
for the sake of arithmetic mean.
* MallocBench/MallocBench/stress.cpp:
(Object::Object):
(allocate):
(deallocate):
(benchmark_stress): Verify the contents of memory as we go. Also,
force scavenging each time through the loop to test the scavenging path.
* MallocBench/MallocBench/theverge.cpp:
(benchmark_theverge):
* MallocBench/MallocBench/tree.cpp:
(benchmark_tree_churn): Re-weighted, as above.
2014-09-08 Myles C. Maxfield <mmaxfield@apple.com>
PerformanceTests/SVG/SVG-Text.html has unparsable output
https://bugs.webkit.org/show_bug.cgi?id=136648
Reviewed by Gavin Barraclough.
I need to clean up the arbitrary text on the page before telling
the test runner infrastructure that the test is complete.
* SVG/SVG-Text.html:
2014-09-05 Myles C. Maxfield <mmaxfield@apple.com>
Laying out a TextRun using an SVG font is O(n^2)
https://bugs.webkit.org/show_bug.cgi?id=136584
Reviewed by Andreas Kling.
Time how long it takes to lay out and render some text using an SVG font.
* SVG/SVG-Text.html: Added.
* SVG/resources/graffiti.svg: Added.
2014-09-02 Geoffrey Garen <ggaren@apple.com>
MallocBench should have a stress test for correctness
https://bugs.webkit.org/show_bug.cgi?id=136468
Reviewed by Andreas Kling.
Added a stress test that allocates randomized sizes of randomized
lifetimes in randomized order.
This version of the test reproduces the EWS crash seen in bmalloc
(<https://bugs.webkit.org/show_bug.cgi?id=132629>).
* MallocBench/MallocBench.xcodeproj/project.pbxproj:
* MallocBench/MallocBench/Benchmark.cpp: Sort!
* MallocBench/MallocBench/stress.cpp: Added.
(Object::Object):
(SizeStream::SizeStream):
(SizeStream::next):
(benchmark_stress): Usually, we random(0). Surprisingly, though, only
random(1) reproduces the bug I was looking for.
* MallocBench/MallocBench/stress.h: Added.
2014-06-02 Ryosuke Niwa <rniwa@webkit.org>
Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
https://bugs.webkit.org/show_bug.cgi?id=133455
Reviewed by Timothy Hatcher.
* Speedometer/: Renamed from DoYouEvenBench.
* Skipped: Updated the path for InteractiveRunner.html
2014-06-02 Ryosuke Niwa <rniwa@webkit.org>
Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
https://bugs.webkit.org/show_bug.cgi?id=133455
Reviewed by Timothy Hatcher.
Renamed the benchmark to Speedometer and added the new look designed by Timothy Hatcher.
Also changed the unit of measurements from milliseconds to runs-per-minute averaged over the number
of the benchmark suites (7 for 1.0). You can divide 420000 by the old benchmark score (in milliseconds)
to get the new value for the set of tests that are enabled by default in 1.0. You can continue to see
results in milliseconds on Full.html#ms.
* DoYouEvenBench/Full.html: Added a bunch of sections and the description of the benchmark.
* DoYouEvenBench/resources/benchmark-report.js: Remove the newly added content when ran inside a DRT or
WTR so that run-perf-tests wouldn't error.
* DoYouEvenBench/resources/benchmark-runner.js:
(BenchmarkRunner.prototype._appendFrame): Call a newly added willAddTestFrame callback when it exists.
* DoYouEvenBench/resources/gauge.png: Added.
* DoYouEvenBench/resources/gauge@2x.png: Added.
* DoYouEvenBench/resources/logo.png: Added.
* DoYouEvenBench/resources/logo@2x.png: Added.
* DoYouEvenBench/resources/main.css: Replaced the style.
* DoYouEvenBench/resources/main.js:
(window.benchmarkClient.willAddTestFrame): Place the iframe right where #testContainer is shown.
(window.benchmarkClient.willRunTest): Show the name of the suite (e.g. EmberJS-TodoMVC) to run next.
(window.benchmarkClient.didRunSuites):
(window.benchmarkClient.willStartFirstIteration): Initialize _timeValues and _finishedTestCount now that
we have an UI to run the benchmark multiple times without reloading the page.
(window.benchmarkClient.didFinishLastIteration): Split into smaller pieces.
(window.benchmarkClient._computeResults): Computes the mean and the statistics for the given time values,
and also format them in a human readable form.
(window.benchmarkClient._computeResults.totalTimeInDisplayUnit): Converts ms to runs/min.
(window.benchmarkClient._computeResults.sigFigFromPercentDelta): Given a percentage error (e.g. 1%),
returns the number of significant digits required for the mean.
(window.benchmarkClient._computeResults.toSigFigPrecision): Calls toPrecision with the specified precision
constrained to be at least the number of non-decimal digits and at most 6.
(window.benchmarkClient._addDetailedResultsRow): Renamed from _addResult. It now takes the table to which
to add a row and the iteration number.
(window.benchmarkClient._updateGaugeNeedle): Added. Controls the angle of the speed indicator.
(window.benchmarkClient._populateDetailedResults): Added.
(window.benchmarkClient.prepareUI): Added. It adds an event listener to show a specified section when
the push state of the document changes, and shows a warning sign when the view port size is too small.
We do this inside a callback to avoid running it inside DRT / WTR.
(startBenchmark):
(showSection): Added.
(startTest): Added.
(showResultsSummary): Added.
(showResultDetails): Added.
(showAbout): Added.
2014-06-01 Ryosuke Niwa <rniwa@webkit.org>
DYEBench: Move test states into benchmarkClient and remove the closure
https://bugs.webkit.org/show_bug.cgi?id=133438
Reviewed by Benjamin Poulain.
Moved all local variables in the closure wrapping benchmarkClient onto the object itself
and removed the closure to improve the readability of the code.
* DoYouEvenBench/Full.html:
* DoYouEvenBench/resources/main.js:
(window.benchmarkClient.willRunTest):
(window.benchmarkClient.didRunTest):
(window.benchmarkClient.didRunSuites):
(window.benchmarkClient.willStartFirstIteration):
(window.benchmarkClient.didFinishLastIteration):
(window.benchmarkClient._addResult): Moved.
(.): Deleted.
2014-06-01 Ryosuke Niwa <rniwa@webkit.org>
DYEBench: Split stylesheets and scripts in Full.html into separate files
https://bugs.webkit.org/show_bug.cgi?id=133437
Reviewed by Benjamin Poulain.
Extracted main.js and main.css.
Also fixed a bug in startBenchmark that disabled suites were counted towards the total number of tests.
* DoYouEvenBench/Full.html:
* DoYouEvenBench/resources/main.css: Added.
* DoYouEvenBench/resources/main.js: Added.
(.addResult):
(window.benchmarkClient):
(startBenchmark): Renamed from startTest.
2014-06-01 Ryosuke Niwa <rniwa@webkit.org>
DYEBench: CSS parser warning at line 106 of base.css
https://bugs.webkit.org/show_bug.cgi?id=133433
Reviewed by Maciej Stachowiak.
Removed the old filter CSS property for Internet Explorer. The latest Internet Explorer supports -ms-linear-gradient
on background CSS property anyways.
It's interesting that some of the tests only have -webkit- prefixes. Perhaps we should update those subtests.
* DoYouEvenBench/Full.html:
* DoYouEvenBench/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css:
(#header:before):
* DoYouEvenBench/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css:
(#header:before):
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
(#header:before):
* DoYouEvenBench/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css:
(#header:before):
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css:
(#header:before):
* DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css:
(#header:before):
* DoYouEvenBench/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css:
(#header:before):
2014-05-31 Ryosuke Niwa <rniwa@webkit.org>
DYEBench: Ember.js assertion hit at line 20593
https://bugs.webkit.org/show_bug.cgi?id=133431
Reviewed by Darin Adler.
The assertion was hit because ToDoMVC includes jQuery 2.1 and Ember.js 1.3.1 only recognizes jQuery 2.0.
Port the assertion from Ember.js 1.5.1 to suppress the assertion.
We should update the entire Ember.js at some point but this would do the job for now.
* DoYouEvenBench/Full.html:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:
2014-05-31 Ryosuke Niwa <rniwa@webkit.org>
DYEBench: Prevent frame flattening on iOS
https://bugs.webkit.org/show_bug.cgi?id=133428
Reviewed by Andreas Kling.
Prevent frame flattening on iOS by setting scrolling=no.
* DoYouEvenBench/Full.html:
* DoYouEvenBench/resources/benchmark-runner.js:
(BenchmarkRunner.prototype._appendFrame):
2014-05-30 Ryosuke Niwa <rniwa@webkit.org>
DYEBench spits out 404 errors for learn.json
https://bugs.webkit.org/show_bug.cgi?id=133416
Reviewed by Oliver Hunt.
Add an empty learn.json file so that it won't cause a 404 error when hosted on a http server.
Bumped the version number to 0.12.
* DoYouEvenBench/Full.html:
* DoYouEvenBench/resources/todomvc/learn.json:
2014-05-23 Geoffrey Garen <ggaren@apple.com>
Performance testing, diamond-square terrain generation + canvas
https://bugs.webkit.org/show_bug.cgi?id=133054
Reviewed by Ryosuke Niwa.
This test was written by Hunter Loftis. It originally appeared on his
blog @ <http://www.playfuljs.com/realistic-terrain-in-130-lines/>.
I did a bit of editing for format and benchmark suitability.
* Canvas/terrain.html: Added.
2014-05-13 Ryosuke Niwa <rniwa@webkit.org>
DYEBench should run 20 iterations in browser
https://bugs.webkit.org/show_bug.cgi?id=132795
Reviewed by Gavin Barraclough.
Right now, run-perf-tests runs BYEBench 4 times with different instances of DRT/WTR to get
a more stable time and account for differences in the runtime environment, particularly,
ASLR (Address Space Layout Randomization).
While we can't account for the latter effect when the benchmark is ran inside a browser,
we can at least run 20 iterations to get a more stable (but perhaps biased by ALSR) number.
While the sample size of 20 is statistically unsound to compute the arithmetic mean from,
it's MUCH better than the current sample size of 5.
* DoYouEvenBench/Full.html:
(benchmarkClient.iterationCount): Set the default iteration count to 20.
(startTest): Use benchmarkClient.iterationCount as the iteration count.
* DoYouEvenBench/resources/benchmark-report.js:
(benchmarkClient.iterationCount): Continue to use the old iteration count of 5 when ran
inside run-perf-tests.
2014-05-09 Ryosuke Niwa <rniwa@webkit.org>
DYEBench should show 95th percentile right next to the mean with ±
https://bugs.webkit.org/show_bug.cgi?id=132729
Reviewed by Darin Adler.
Before this patch, Full.html showed the 95th percentile delta for the arthemtic mean in a separate row
but this was confusing for some people. Show it right next to mean in the same row separated by ±.
* DoYouEvenBench/Full.html:
2014-05-08 Ryosuke Niwa <rniwa@webkit.org>
DYEBench should use TodoMVC to test FlightJS for consistency
https://bugs.webkit.org/show_bug.cgi?id=132727
Reviewed by Andreas Kling.
Add a test suite for the FlightJS version of TodoMVC, and disable FlightJS-MailClient by default.
I initially intended to include a wider variety of demo apps in DYEBench
but that's not happening any time soon so let us use TodoMVC for all frameworks for now.
We can add more demo apps in v2.
* DoYouEvenBench/Full.html: Increment the version to 0.10.
* DoYouEvenBench/InteractiveRunner.html: Don't check disabled suites by default.
* DoYouEvenBench/resources/tests.js:
* DoYouEvenBench/resources/todomvc/dependency-examples: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/.gitignore: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/.jshintrc: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/app.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/stats.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/todos.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/main.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/store.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/main_selector.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/new_item.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/stats.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/todo_list.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/toggle_all.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/with_filters.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/utils.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/stats.html: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/todo.html: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower.json: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot/depot.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-sham.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-shim.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/advice.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/base.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/component.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/compose.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/debug.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/index.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/logger.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/registry.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/utils.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery/jquery.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text/text.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs/require.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/bg.png: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/index.html: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/karma.conf.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/package.json: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/readme.md: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/.jshintrc: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/footer.html: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/new_todo.html: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/toggle_all.html: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock/datastore.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/stats_spec.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/todos_spec.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/new_item_spec.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/stats_spec.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/toggle_all_spec.js: Added.
* DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/test-main.js: Added.
2014-05-07 Manuel Rego Casasnovas <rego@igalia.com>
[CSS Grid Layout] Remove runtime feature
https://bugs.webkit.org/show_bug.cgi?id=132382
Reviewed by Benjamin Poulain.
Remove set of WebKitCSSGridLayoutEnabled preference.
* Layout/auto-grid-lots-of-data.html:
* Layout/fixed-grid-lots-of-data.html:
2014-05-06 Radu Stavila <stavila@adobe.com>
[CSSRegions] Enabled regions performance tests by default
https://bugs.webkit.org/show_bug.cgi?id=128244
Reviewed by Andreas Kling.
Enabled regions performance tests.
* Skipped:
2014-04-25 Andreas Kling <akling@apple.com>
Bump jQuery to same version that dromaeo.com uses.
Rubber-stamped by Ryosuke Niwa.
* Dromaeo/resources/dromaeo/web/lib/jquery-1.10.2.min.js: Added.
* Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html:
2014-04-18 Geoffrey Garen <ggaren@apple.com>
Added some more Membuster recordings to MallocBench
https://bugs.webkit.org/show_bug.cgi?id=131862
Reviewed by Sam Weinig.
* MallocBench/MallocBench/Benchmark.cpp:
(Benchmark::Benchmark):
(Benchmark::run):
* MallocBench/MallocBench/Benchmark.h:
* MallocBench/MallocBench/CommandLine.cpp:
* MallocBench/MallocBench/CommandLine.h:
(CommandLine::runs): Added a --runs option, so we can specify zero runs
for memory warning benchmarks. Those benchmarks want zero runs so that
they can perform a single warmup, which does not free all allocated
objects, and then see how far back to 0MB they can get. Running multiple
times would accumulate leaks, which is not representative of the
simulated scenario.
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::Interpreter):
(Interpreter::run):
* MallocBench/MallocBench/Interpreter.h: Support not deallocating all
objects allocated during the recording, so we can do low memory warning
memory use measurements, as above.
* MallocBench/MallocBench/flickr.cpp:
(benchmark_flickr_memory_warning):
* MallocBench/MallocBench/main.cpp:
(main):
* MallocBench/MallocBench/reddit.cpp:
(benchmark_reddit_memory_warning):
* MallocBench/MallocBench/theverge.cpp:
(benchmark_theverge_memory_warning): Adopt the API above.
* MallocBench/run-malloc-benchmarks: I took a first pass at listing all
available benchmarks here. Then I commented out the benchmarks that
probably aren't reasonable to run by default.
2014-04-18 Geoffrey Garen <ggaren@apple.com>
MallocBench: removed the --measure-heap option
https://bugs.webkit.org/show_bug.cgi?id=131854
Reviewed by Sam Weinig.
As of <https://bugs.webkit.org/show_bug.cgi?id=131661>, measuring the
heap is fast, so there's no reason to disable it.
* MallocBench/MallocBench/Benchmark.cpp:
(Benchmark::Benchmark):
(Benchmark::run):
(Benchmark::printReport):
* MallocBench/MallocBench/Benchmark.h:
* MallocBench/MallocBench/CommandLine.cpp:
(CommandLine::printUsage):
* MallocBench/MallocBench/CommandLine.h:
(CommandLine::heapSize):
(CommandLine::measureHeap): Deleted.
* MallocBench/MallocBench/main.cpp:
(main):
2014-04-16 Alexandru Chiculita <achicu@adobe.com>
Improve performance of the RenderLayerCompositor::OverlapMap
https://bugs.webkit.org/show_bug.cgi?id=115063
Reviewed by Simon Fraser.
Testing the performance of computing the overlap of 5000 layers.
* Layout/layers_overlap_2d.html: Added. Using non-composited layers, to check
that the performance on the non-composited path is not changing with this patch.
* Layout/layers_overlap_3d.html: Added. Records the time to do the layout of 5000
non-overlapping 3D layers.
2014-04-15 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Linking stylesheet instead of inline style definition has ruined ShapesRegions test
https://bugs.webkit.org/show_bug.cgi?id=131572
Reviewed by Rob Buis.
In r167022 I moved the common CSS selectors into RegionsShapes.css, then I linked it into the perf test
files, but the measurement results dropped down from about 400ms to 10ms. I realized it's caused by the
linked css rule, so I've put the selectors back into every test case, which fixes the test measurements.
* Layout/Shapes/resources/RegionsShapes.css: Removed.
* Layout/Shapes/resources/RegionsShapesContent.html:
* Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html:
* Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html:
* Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html:
* Layout/Shapes/resources/RegionsShapesContentNoShapes.html:
2014-04-14 Geoffrey Garen <ggaren@apple.com>
MallocBench should scavenge explicitly instead of waiting
https://bugs.webkit.org/show_bug.cgi?id=131661
Reviewed by Andreas Kling.
* MallocBench/MallocBench.xcodeproj/project.pbxproj: Don't build mbmalloc
by default because it will overwrite any other mbmalloc you're working
with in the WebKitBuild directory.
* MallocBench/MallocBench/Benchmark.cpp:
(Benchmark::run): Scavenge explicitly instead of waiting. This is faster,
and it's the only way to get FastMalloc to scavenge. (That's a bug in
FastMalloc, but we don't want it to interfere with broader testing.)
* MallocBench/MallocBench/mbmalloc.cpp:
* MallocBench/MallocBench/mbmalloc.h: Added a scavenge implementation
for system malloc.
2014-04-14 Geoffrey Garen <ggaren@apple.com>
A few MallocBench record/replay fixes
https://bugs.webkit.org/show_bug.cgi?id=131627
Reviewed by Andreas Kling.
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::run): Accept 0-sized allocations without asserting because
WebKit does that sometimes.
* MallocBench/MallocBench/flickr.ops:
* MallocBench/MallocBench/flickr_memory_warning.ops:
* MallocBench/MallocBench/reddit.ops:
* MallocBench/MallocBench/reddit_memory_warning.ops:
* MallocBench/MallocBench/theverge.ops:
* MallocBench/MallocBench/theverge_memory_warning.ops: Updated these
recordings because a bug in the recording mechanism caused one out of
every few thousand slot values to be bogus.
2014-04-13 Geoffrey Garen <ggaren@apple.com>
Added some website recordings to MallocBench -- taken from Membuster
https://bugs.webkit.org/show_bug.cgi?id=131601
Reviewed by Ryosuke Niwa.
Added flickr, reddit, and theverge -- each recorded from Membuster's
cache, with and without sending Safari a low memory warning.
* MallocBench/MallocBench.xcodeproj/project.pbxproj:
* MallocBench/MallocBench/Benchmark.cpp:
* MallocBench/MallocBench/flickr.cpp: Added.
(benchmark_flickr):
(benchmark_flickr_memory_warning):
* MallocBench/MallocBench/flickr.h: Added.
* MallocBench/MallocBench/flickr.ops: Added.
* MallocBench/MallocBench/flickr_memory_warning.ops: Added.
* MallocBench/MallocBench/reddit.cpp: Added.
(benchmark_reddit):
(benchmark_reddit_memory_warning):
* MallocBench/MallocBench/reddit.h: Added.
* MallocBench/MallocBench/reddit.ops: Added.
* MallocBench/MallocBench/reddit_memory_warning.ops: Added.
* MallocBench/MallocBench/theverge.cpp: Added.
(benchmark_theverge):
(benchmark_theverge_memory_warning):
* MallocBench/MallocBench/theverge.h: Added.
* MallocBench/MallocBench/theverge.ops: Added.
* MallocBench/MallocBench/theverge_memory_warning.ops: Added.
2014-04-13 Geoffrey Garen <ggaren@apple.com>
MallocBench record/replay should support realloc
https://bugs.webkit.org/show_bug.cgi?id=131598
Reviewed by Ryosuke Niwa.
* MallocBench/MallocBench.xcodeproj/project.pbxproj: Fixed some linkage
issues that caused us not to fully link to system malloc in the default
case. Also marked mbmalloc.dylib as required so the error message will
be clearer if we mess up.
* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::run):
* MallocBench/MallocBench/Interpreter.h: Added the realloc case, and
upgraded one-letter names to full words.
2014-04-11 Dirk Schulze <krit@webkit.org>
Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
https://bugs.webkit.org/show_bug.cgi?id=79659
Reviewed by Andreas Kling.
Add performance tests for real this time.
* Canvas/compositing-drawimage.html: Added.
* Canvas/compositing-fillRect.html: Added.
2014-04-11 Dirk Schulze <krit@webkit.org>
Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
https://bugs.webkit.org/show_bug.cgi?id=79659
Reviewed by Andreas Kling.
Add performance tests for fillRect() and drawImage() on composited contexts.
* Canvas/compositing-drawimage.html: Added.
* Canvas/compositing-fillRect.html: Added.
2014-04-09 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add no shapes version of RegionsShapes performance test
https://bugs.webkit.org/show_bug.cgi?id=131455
Reviewed by Ryosuke Niwa.
This is a no shapes version of the RegionsShapes performance test. All the content
will wrap around the floating containers. This way we can compare the runtime/memory
usage of the RegionsShapes test with/without shapes. The test is skipped by default.
* Layout/Shapes/RegionsShapesNoShapes.html: Added.
* Layout/Shapes/resources/RegionsShapesContentNoShapes.html: Added.
2014-04-09 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add no regions version of RegionsShapes performance test
https://bugs.webkit.org/show_bug.cgi?id=131442
Reviewed by Ryosuke Niwa.
We would like have a no regions version for RegionsShapes performance test. The new
test produces similar layout to RegionsShapes.html without using regions. It is helpful
for us to do further comparisons when necessary. This test is skipped by default.
* Layout/Shapes/RegionsShapesNoRegions.html: Added.
* Layout/Shapes/resources/RegionsShapes.css: Added.
(html, body):
(.shape):
(#circleShape):
(#imageShape):
(#insetShape):
(#roundedInsetShape):
(#triangleLeft):
(#triangleRight):
(#selfIntersectingStar):
(#region1):
(#region2):
(#region3):
* Layout/Shapes/resources/RegionsShapesContent.html:
* Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html: Added.
* Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html: Added.
* Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html: Added.
2014-04-02 Geoffrey Garen <ggaren@apple.com>
Unreviewed.
Try to ignore some Xcode shmutz in MallocBench.
* MallocBench/MallocBench.xcodeproj: Added property svn:ignore.
2014-04-02 Geoffrey Garen <ggaren@apple.com>
Let's benchmark malloc
https://bugs.webkit.org/show_bug.cgi?id=131118
Reviewed by Mark Hahnenberg.
I want to replace fastMalloc with something faster (fasterMalloc?).
I wrote these benchmarks to test / drive development.
* MallocBench: Added.
* MallocBench/MallocBench: Added.
* MallocBench/MallocBench.xcodeproj: Added.
* MallocBench/MallocBench.xcodeproj/project.pbxproj: Added.
* MallocBench/MallocBench/Benchmark.cpp: Added.
(allocateHeap):
(deallocateHeap):
(Benchmark::Benchmark):
(Benchmark::printBenchmarks):
(Benchmark::runOnce):
(Benchmark::run):
(Benchmark::printReport):
(Benchmark::currentTimeMS):
(Benchmark::currentMemoryBytes):
* MallocBench/MallocBench/Benchmark.h: Added.
(Benchmark::Memory::Memory):
(Benchmark::Memory::operator-):
(Benchmark::isValid):
* MallocBench/MallocBench/CPUCount.cpp: Added.
(cpuCount):
* MallocBench/MallocBench/CPUCount.h: Added.
* MallocBench/MallocBench/CommandLine.cpp: Added.
(CommandLine::printUsage):
* MallocBench/MallocBench/CommandLine.h: Added.
(CommandLine::isValid):
(CommandLine::benchmarkName):
(CommandLine::isParallel):
(CommandLine::heapSize):
(CommandLine::measureHeap):
* MallocBench/MallocBench/Interpreter.cpp: Added.
(Interpreter::Interpreter):
(Interpreter::~Interpreter):
(Interpreter::run):
* MallocBench/MallocBench/Interpreter.h: Added.
* MallocBench/MallocBench/balloon.cpp: Added.
(benchmark_balloon):
* MallocBench/MallocBench/balloon.h: Added.
* MallocBench/MallocBench/big.cpp: Added.
(benchmark_big):
* MallocBench/MallocBench/big.h: Added.
* MallocBench/MallocBench/churn.cpp: Added.
(HeapDouble::operator new):
(HeapDouble::operator delete):
(HeapDouble::HeapDouble):
(HeapDouble::operator+=):
(benchmark_churn):
* MallocBench/MallocBench/churn.h: Added.
* MallocBench/MallocBench/crash.ops: Added.
* MallocBench/MallocBench/facebook.cpp: Added.
(benchmark_facebook):
* MallocBench/MallocBench/facebook.h: Added.
* MallocBench/MallocBench/facebook.ops: Added.
* MallocBench/MallocBench/fragment.cpp: Added.
(validate):
(benchmark_fragment):
(benchmark_fragment_iterate):
* MallocBench/MallocBench/fragment.h: Added.
* MallocBench/MallocBench/list.cpp: Added.
(benchmark_list_allocate):
(benchmark_list_traverse):
* MallocBench/MallocBench/list.h: Added.
* MallocBench/MallocBench/main.cpp: Added.
(main):
* MallocBench/MallocBench/mbmalloc.cpp: Added.
* MallocBench/MallocBench/mbmalloc.h: Added.
* MallocBench/MallocBench/medium.cpp: Added.
(benchmark_medium):
* MallocBench/MallocBench/medium.h: Added.
* MallocBench/MallocBench/message.cpp: Added.
(benchmark_message_one):
(benchmark_message_many):
* MallocBench/MallocBench/message.h: Added.
* MallocBench/MallocBench/realloc.cpp: Added.
(benchmark_realloc):
* MallocBench/MallocBench/realloc.h: Added.
* MallocBench/MallocBench/tree.cpp: Added.
(benchmark_tree_allocate):
(benchmark_tree_traverse):
(benchmark_tree_churn):
* MallocBench/MallocBench/tree.h: Added.
* MallocBench/run-malloc-benchmarks: Added.
2014-03-29 Mark Lam <mark.lam@apple.com>
LongSpider 3d-morph result check is inappropriate.
<https://webkit.org/b/130928>
Reviewed by Filip Pizlo.
The LongSpider 3d-morph component expected result check is incorrect.
The existing test checks if the leading digit of a sum starts with "-1".
However, it turned out that the expected sum is in the order of
-1.8735013540549517e-16 (i.e. very close to 0). With small errors in
the terms of the sum adding up, it is very easy for the resultant sum
to fluctuate. There is no guarantee that the resultant sum's most
significant digit will start with -1 either.
The fix is to do a tolerance check on all the terms of the sum as well
as the total sum value instead. The tolerance should be more lenient
for the sum which accumulates error from the individual terms, then for
individual terms.
* LongSpider/3d-morph.js:
(expect):
2014-03-28 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add performance tests for Shapes with Regions
https://bugs.webkit.org/show_bug.cgi?id=129624
Reviewed by Ryosuke Niwa.
This tests introduces a real-life like page, which contains different types of shapes within
shape-outsides. The content flows through regions, which use media queries. The performance test
loads the actual Shapes-Regions test case into iframes with different page sizes (thus the layout
triggers the media queries as well), and measures its load time.
* Layout/RegionsShapes.html: Added.
* Layout/Shapes/resources/RegionsShapesContent.html: Added.
2014-03-20 Zoltan Horvath <zoltan@webkit.org>
Add option for hiding Confidence Interval Delta on the performance tests results page
https://bugs.webkit.org/show_bug.cgi?id=130483
Reviewed by Ryosuke Niwa.
I've found it useful to hide the confidence interval delta from the results table
sometimes, for example on copying data, or for a clearer look. This patch introduces
a new button for it on the local results page.
* resources/results-template.html:
2014-03-20 Laszlo Vidacs <lvidacs.u-szeged@partner.samsung.com>
Optimize RenderTable::colToEffCol() for tables without colspans
https://bugs.webkit.org/show_bug.cgi?id=129298
Reviewed by Simon Fraser.
Create an alternative fast path to RenderTable colToEffCol() and effColToCol()
when there is no colspan or colspan does not exceed the width of table.
Blink merge https://codereview.chromium.org/154243002 by rhogan
* Layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html: Added.
* Layout/large-table-with-collapsed-borders-and-colspans.html: Added.
* Layout/large-table-with-collapsed-borders-and-no-colspans.html: Added.
* Layout/resources/large-table-with-collapsed-borders.css: Added.
* Layout/resources/large-table-with-collapsed-borders.js: Added.
2014-03-14 Maciej Stachowiak <mjs@apple.com>
Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* Dromaeo/resources/dromaeo/web/tests/sunspider-3d-raytrace.html:
* Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bitwise-and.html:
* Dromaeo/resources/dromaeo/web/tests/sunspider-math-cordic.html:
* Dromaeo/resources/dromaeo/web/tests/sunspider-string-tagcloud.html:
* LongSpider/3d-morph.js:
* LongSpider/3d-raytrace.js:
* LongSpider/math-cordic.js:
* LongSpider/string-tagcloud.js:
* Parser/resources/html5-8266.html:
* Parser/resources/html5.html:
2014-03-10 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add performance tests for SVG shape with shape-margin
https://bugs.webkit.org/show_bug.cgi?id=129930
Reviewed by Ryosuke Niwa.
The test is skipped by default.
* Layout/Shapes/ShapeOutsideSVGWithMargin.html: Added.
* Layout/Shapes/resources/shape.svg: Added.
2014-02-19 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add performance test for stacked floats with shape-outsides
https://bugs.webkit.org/show_bug.cgi?id=128821
Reviewed by Brent Fulgham.
This tests generate stacked floats content with shape-outsides.
The test is skipped by default.
* Layout/Shapes/ShapeOutsideStackedPolygons.html: Added.
2014-02-15 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add performance test for raster shape with shape-margin
https://bugs.webkit.org/show_bug.cgi?id=128770
Reviewed by Ryosuke Niwa.
This patch introduces a new performance test for image valued shapes,
where shape-margin is applied on the shape.
The test is skipped by default.
* Layout/Shapes/ShapeOutsideRasterWithMargin.html: Added.
2014-02-14 Ryosuke Niwa <rniwa@webkit.org>
Improve the appearance of DYEBench
https://bugs.webkit.org/show_bug.cgi?id=128866
Reviewed by Antti Koivisto.
Add a div that shows progress during the test. Also show 95th percentile,
and use a table instead of pre to show results.
* DoYouEvenBench/Full.html:
(.addResult): Added. Shows results in a table.
(benchmarkClient.willRunTest): Added to show the progress bar.
(benchmarkClient.didRunTest):
(benchmarkClient.didRunSuites):
(benchmarkClient.didFinishLastIteration): Compute 95th percentile using Statistics.js
* DoYouEvenBench/resources/benchmark-runner.js:
(BenchmarkRunner.prototype._appendFrame): Fix the bug where marginLeft and marginTop
weren't correctly parsed. We were treating top as left and bottom as top somehow.
(BenchmarkRunner.prototype._runTestAndRecordResults): Fixed a typo.
2014-02-13 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add performance test for complex polygon with shape-margin
https://bugs.webkit.org/show_bug.cgi?id=128769
Reviewed by Ryosuke Niwa.
This patch modifies the logic of createShapeOutsideTest to accept multiple
CSS properties from the test. The patch adds performance test for complex
polygon shape (self intersecting at multiple places) case, moreover we
apply shape-margin on the polygon also.
* Layout/Shapes/ShapeOutsideContentBox.html:
* Layout/Shapes/ShapeOutsideInset.html:
* Layout/Shapes/ShapeOutsidePolygonWithMargin.html: Added.
* Layout/Shapes/ShapeOutsideRaster.html:
* Layout/Shapes/ShapeOutsideSimplePolygon.html:
* Layout/Shapes/resources/shapes.js:
2014-02-13 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add performance test for raster shape
https://bugs.webkit.org/show_bug.cgi?id=128746
Reviewed by Ryosuke Niwa.
This patch adds performance testing for image valued shape-outside.
The test is skipped by default for now.
* Layout/Shapes/ShapeOutsideRaster.html: Added.
* Layout/Shapes/resources/shape.gif: Added.
2014-02-10 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add initial performance tests for polygon shape
https://bugs.webkit.org/show_bug.cgi?id=128554
Reviewed by Ryosuke Niwa.
This patch adds performance testing for simple polygon shape-outside.
The Shapes performance tests directory is skipped by default.
* Layout/Shapes/ShapeOutsideSimplePolygon.html: Added.
2014-02-07 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add initial performance tests for inset shape
https://bugs.webkit.org/show_bug.cgi?id=128378
Reviewed by Ryosuke Niwa.
* Layout/Shapes/ShapeOutsideContentBox.html: Move js to shapes.js.
* Layout/Shapes/ShapeOutsideInset.html: Added.
* Layout/Shapes/resources/shapes.js: Added.
(.):
2014-02-04 Ryosuke Niwa <rniwa@webkit.org>
Undelete the "build" directory erroneously removed in r163427.
* DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/director/build:
2014-02-04 Ryosuke Niwa <rniwa@webkit.org>
Revert the change made in r162216 as it broke the benchmark on shipping Safari.
* DoYouEvenBench/resources/benchmark-runner.js:
2014-02-04 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Update Ember.js test case
https://bugs.webkit.org/show_bug.cgi?id=128227
Reviewed by Benjamin Poulain.
Updated the Ember.js TodoMVC implementation.
* DoYouEvenBench/resources/tests.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower.json:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-data/ember-data.js: Added.
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/index.html:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/app.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/helpers/pluralize.js: Added.
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Removed.
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/store.js: Removed.
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/todo.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/router.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/todos_view.js: Added.
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/readme.md:
* DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/test.html:
2014-02-04 Zoltan Horvath <zoltan@webkit.org>
[CSS Shapes] Add initial performance test for shape-outside: content-box
https://bugs.webkit.org/show_bug.cgi?id=128190
Reviewed by Ryosuke Niwa.
I've introduced Shapes subdirectory in Layout, every CSS Shapes related performance tests should
go there in the future. The initial performance tests uses 'shape-outside: content-box' in order
to tests the code paths of the Shapes implementation. I also introduced shapes.js, which allows us
to easily add new, simple performance tests for shape-outside.
The entire progress is tracked under #128188 meta bug.
* Layout/Shapes/ShapeOutsideContentBox.html: Added.
* Layout/Shapes/resources/shapes.css: Added.
* Layout/Shapes/resources/shapes.js: Added.
* Skipped: We skip running the tests by default for now.
2014-01-17 Manuel Rego Casasnovas <rego@igalia.com>
[CSS Regions] Minor fixes in regions performance tests
https://bugs.webkit.org/show_bug.cgi?id=127041
Reviewed by Ryosuke Niwa.
Fix minor issues in CSS Regions performance tests.
* Layout/RegionsAuto.html: Change type to lower case.
* Layout/RegionsAutoMaxHeight.html: Ditto.
* Layout/RegionsFixed.html: Ditto.
* Layout/RegionsFixedShort.html: Ditto.
* Layout/RegionsSelection.html: Ditto. Move test methods from regions.js.
* Layout/resources/regions.js: Remove moved methods.
2014-01-17 Ryosuke Niwa <rniwa@webkit.org>
Host DoYouEvenBench on webkit.org
https://bugs.webkit.org/show_bug.cgi?id=127185
Reviewed by Benjamin Poulain.
Compute the resources directory relative to the benchmark-runner's location
so that we can load tests even if the runner HTML was located elsewhere.
* DoYouEvenBench/Full.html:
* DoYouEvenBench/resources/benchmark-runner.js:
(BenchmarkState._containingDirectory):
2014-01-17 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Move flightjs-example-app and todomvc into resources
https://bugs.webkit.org/show_bug.cgi?id=127183
Rubber-stamped by Anders Carlsson.
* DoYouEvenBench/InteractiveRunner.html: Copied from PerformanceTests/DoYouEvenBench/benchmark.html.
* DoYouEvenBench/benchmark.html: Removed.
* DoYouEvenBench/flightjs-example-app: Removed.
* DoYouEvenBench/flightjs-example-app/LICENSE.md: Removed.
* DoYouEvenBench/flightjs-example-app/README.md: Removed.
* DoYouEvenBench/flightjs-example-app/app: Removed.
* DoYouEvenBench/flightjs-example-app/app/boot: Removed.
* DoYouEvenBench/flightjs-example-app/app/boot/page.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_data: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_data/compose_box.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_data/mail_items.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_data/move_to.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_ui: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_ui/compose_box.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_ui/folders.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_ui/mail_controls.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_ui/mail_items.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_ui/move_to_selector.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/component_ui/with_select.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/css: Removed.
* DoYouEvenBench/flightjs-example-app/app/css/custom.css: Removed.
* DoYouEvenBench/flightjs-example-app/app/data.js: Removed.
* DoYouEvenBench/flightjs-example-app/app/templates.js: Removed.
* DoYouEvenBench/flightjs-example-app/components: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.css: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.min.css: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/img: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/js: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.min.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/.gitignore: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/CHANGES: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/LICENSE: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/README.md: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/component.json: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.min.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.min.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/package.json: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/index.html: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/json2.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-array.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-date.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-function.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-object.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-string.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/.travis.yml: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/advice.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/component.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/compose.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/index.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/logger.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/registry.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/utils.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/tools: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/tools/debug: Removed.
* DoYouEvenBench/flightjs-example-app/components/flight/tools/debug/debug.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/LICENSE.md: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/README.md: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/bower.json: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-jquery: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib: Removed.
* DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/jquery: Removed.
* DoYouEvenBench/flightjs-example-app/components/jquery/component.json: Removed.
* DoYouEvenBench/flightjs-example-app/components/jquery/composer.json: Removed.
* DoYouEvenBench/flightjs-example-app/components/jquery/jquery.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/jquery/jquery.min.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/mustache: Removed.
* DoYouEvenBench/flightjs-example-app/components/mustache/mustache.js: Removed.
* DoYouEvenBench/flightjs-example-app/components/requirejs: Removed.
* DoYouEvenBench/flightjs-example-app/components/requirejs/require.js: Removed.
* DoYouEvenBench/flightjs-example-app/index.html: Removed.
* DoYouEvenBench/flightjs-example-app/karma.conf.js: Removed.
* DoYouEvenBench/flightjs-example-app/package.json: Removed.
* DoYouEvenBench/flightjs-example-app/requireMain.js: Removed.
* DoYouEvenBench/resources/benchmark-runner.js:
* DoYouEvenBench/resources/flightjs-example-app: Copied from PerformanceTests/DoYouEvenBench/flightjs-example-app.
* DoYouEvenBench/resources/todomvc: Copied from PerformanceTests/DoYouEvenBench/todomvc.
* DoYouEvenBench/todomvc: Removed.
* DoYouEvenBench/todomvc/architecture-examples: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower.json: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/index.html: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/app.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services/todoStorage.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/readme.md: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/package.json: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/readme.md: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower.json: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage/backbone.localStorage.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone/backbone.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery/jquery.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/bg.png: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore/underscore.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/index.html: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/app.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections/todos.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/models: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/models/todo.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers/router.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/views: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/app-view.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/todo-view.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/backbone/readme.md: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower.json: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/bg.png: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/index.html: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/app.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/store.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/todo.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/router.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/readme.md: Removed.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/test.html: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower.json: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars/handlebars.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery/jquery.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/bg.png: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/css: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/css/app.css: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/index.html: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/js/app.js: Removed.
* DoYouEvenBench/todomvc/architecture-examples/jquery/readme.md: Removed.
* DoYouEvenBench/todomvc/labs: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower.json: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/LICENSE: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/README.md: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.min.js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/ender.js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/JSXTransformer.js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/bower.json: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.min.js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/bg.png: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/index.html: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/app.jsx: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/footer.jsx: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/todoItem.jsx: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/utils.jsx: Removed.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/readme.md: Removed.
* DoYouEvenBench/todomvc/license.md: Removed.
* DoYouEvenBench/todomvc/readme.md: Removed.
* DoYouEvenBench/todomvc/vanilla-examples: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower.json: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/bg.png: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/index.html: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/app.js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/controller.js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/helpers.js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/model.js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/store.js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/view.js: Removed.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/readme.md: Removed.
* Skipped:
2014-01-17 Ryosuke Niwa <rniwa@webkit.org>
Build fix. Skip HTML files that are not tests.
* Skipped:
2014-01-16 Ryosuke Niwa <rniwa@webkit.org>
Automate DoYouEvenBench
https://bugs.webkit.org/show_bug.cgi?id=124497
Reviewed by Geoffrey Garen.
Enable DoYouEvenBench/Full.html on perf bots by default.
Put a space between the time and ms, and fixed a typo in runner.js so that the aggregator name will be reported.
* DoYouEvenBench/Full.html:
* Skipped:
* resources/runner.js:
2014-01-15 Manuel Rego Casasnovas <rego@igalia.com>
[CSS Regions] Add performance tests for selection with mixed content
https://bugs.webkit.org/show_bug.cgi?id=126427
Reviewed by Ryosuke Niwa.
Add new performance tests for selection in CSS Regions mixing regular
content with regions. 2 new tests are added, one checking select all
command and another simulating a user selection passing through all the
paragraphs (similar to Layout/RegionsSelection.html).
Test are skipped for now while implementation of selection in CSS
Regions is still evolving.
* Layout/RegionsExtendingSelectionMixedContent.html: Added.
* Layout/RegionsSelectAllMixedContent.html: Added.
* Layout/resources/regions.css:
(.regular):
* Layout/resources/regions.js:
* Skipped:
2014-01-14 Ryosuke Niwa <rniwa@webkit.org>
Make DoYouEvenBench runnable by run-perf-tests
https://bugs.webkit.org/show_bug.cgi?id=127030
Reviewed by Andreas Kling.
Added Full.html that runs 5 iterations of DoYouEvenBench. This is the canonical DoYouEvenBench,
which is also runnable by run-perf-tests.
* DoYouEvenBench/Full.html: Added.
* DoYouEvenBench/benchmark.html:
(startTest): Updated the code to account for the fact old measuredValues is pushed down to tests
property and we now have total property so that we don't have to manually compute the total.
* DoYouEvenBench/resources/benchmark-report.js: Added. When we're inside a DRT/WTR, use
PerfTestRunner to output that can be parsed by run-perf-tests. Do the same when the query part
or the fragment part of the current URL is "webkit" for debugging purposes.
* DoYouEvenBench/resources/benchmark-runner.js:
(BenchmarkRunner):
(BenchmarkRunner.prototype._appendFrame): Position the frame at (0, 0) inside DRT and WTR since
we have exactly 800px by 600px inside those two test runners. Also always insert the iframe as
the first child of body to avoid inserting it after the pre inserted by the test runner.
(BenchmarkRunner.prototype.step): Initializes _measuredValues.
(BenchmarkRunner.prototype.runAllSteps): Merged callNextStep in benchmark.html.
(BenchmarkRunner.prototype.runMultipleIterations): Added.
(BenchmarkRunner.prototype._runTestAndRecordResults): Compute the grand total among suites.
Also push down the sync and async time into tests property for consistency.
(BenchmarkRunner.prototype._finalize):
* Dromaeo/resources/dromaeorunner.js:
(DRT.testObject): Renamed dromaeoIterationCount to customIterationCount as this option is also
used by DoYouEvenBench.
* resources/runner.js: Ditto.
(.finish): Spit out the aggregator name.
2014-01-07 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Turn BenchmarkRunner into a real class
https://bugs.webkit.org/show_bug.cgi?id=126613
Reviewed by Stephanie Lewis.
Made BenchmarkRunner an instantiatable class. Made tests.js simply create an array of suite objects
instead of calling BenchmarkRunner.Suite now that we can have mulitple instances of BenchmarkRunner.
* DoYouEvenBench/benchmark.html:
(formatTestName): Moved and renamed from BenchmarkRunner._testName.
(createUIForSuites): Extracted from a giant blob of code.
(startTest): Ditto.
* DoYouEvenBench/resources/benchmark-runner.js:
(BenchmarkRunner): Added.
(BenchmarkRunner.prototype.waitForElement):
(BenchmarkRunner.prototype._removeFrame):
(BenchmarkRunner.prototype._appendFrame):
(BenchmarkRunner.prototype._waitAndWarmUp):
(BenchmarkRunner.prototype._runTest):
(BenchmarkState.prototype.prepareCurrentSuite):
(BenchmarkRunner.prototype.step):
(BenchmarkRunner.prototype._runTestAndRecordResults):
(BenchmarkRunner.prototype._finalize):
* DoYouEvenBench/resources/tests.js:
2014-01-07 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Extract tests and runner code from benchmark.js/html
https://bugs.webkit.org/show_bug.cgi?id=126596
Reviewed by Stephanie Lewis.
Extracted benchmark-runner.js and tests.js out of benchmark.js and benchmark.html.
Added a "client" interface to BenchmarkRunner so that benchmark.html could register necessary hooks to
update its UI. Also made BenchmarkRunner store a tree of results so that the serialization of test names
could be isolated from BenchmarkRunner itself in the future.
* DoYouEvenBench/benchmark.html:
Moved the code to instantiate and update UI here from benchmark.js. The test code was moved out of this
file into resources/tests.js.
* DoYouEvenBench/resources/benchmark-runner.js: Renamed from PerformanceTests/DoYouEvenBench/benchmark.js.
(SimplePromise): Moved from benchmark.js
(SimplePromise.prototype.then): Ditto.
(SimplePromise.prototype.resolve): Ditto.
(BenchmarkTestStep): Added. Wraps each test step.
(BenchmarkRunner.suite): Moved from benchmark.js.
(BenchmarkRunner.setClient): Added.
(BenchmarkRunner.waitForElement): Moved.
(BenchmarkRunner._removeFrame): Ditto.
(BenchmarkRunner._appendFrame): Ditto. Set the width and the height of the iframe as they're more than
presentational as they affect performance.
(BenchmarkRunner._waitAndWarmUp): Ditto.
(BenchmarkRunner._runTest): Ditto.
(BenchmarkRunner._testName): Ditto.
(BenchmarkState): Ditto.
(BenchmarkState.prototype.currentSuite): Ditto.
(BenchmarkState.prototype.currentTest): Ditto.
(BenchmarkState.prototype.next): Ditto.
(BenchmarkState.prototype.isFirstTest): Ditto.
(BenchmarkState.prototype.prepareCurrentSuite): Ditto.
(BenchmarkRunner.step): Ditto.
(BenchmarkRunner._runTestAndRecordResults): Ditto. Note the code to update the UI has been move to
benchmark.html. Also moved the code to accumulate the totals here from _finalize.
(BenchmarkRunner._finalize): Moved.
* DoYouEvenBench/resources/tests.js: Copied from PerformanceTests/DoYouEvenBench/benchmark.html.
Uses BenchmarkTestStep instead of an array for each test step.
2014-01-02 Myles C. Maxfield <mmaxfield@apple.com>
Allow ImageBuffer to re-use IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=125477
Reviewed by Geoff Garen.
This test times creating a variety of different sizes of canvases
once some have already been created. The second creation of the
canvases should re-use the existing IOSurfaces.
* Canvas/reuse.html: Added.
2013-12-23 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r160945.
http://trac.webkit.org/changeset/160945
https://bugs.webkit.org/show_bug.cgi?id=126164
Seems to have broken multiple canvas tests (Requested by ap on
#webkit).
* Canvas/reuse.html: Removed.
2013-12-09 Myles C. Maxfield <mmaxfield@apple.com>
Allow ImageBuffer to re-use IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=125477
Reviewed by Geoff Garen.
This test times creating a variety of different sizes of canvases
once some have already been created. The second creation of the
canvases should re-use the existing IOSurfaces.
* Canvas/reuse.html: Added.
2013-12-15 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION: 2x regression on Dromaeo DOM query tests
https://bugs.webkit.org/show_bug.cgi?id=125377
Reviewed by Filip Pizlo.
Added a micro-benchmark for updating a named property on document.
* Bindings/update-name-getter.html: Added.
* Skipped:
2013-12-03 Manuel Rego Casasnovas <rego@igalia.com>
[CSS Regions] Fix Layout/RegionsSelection.html in Mac platform
https://bugs.webkit.org/show_bug.cgi?id=124963
Reviewed by Ryosuke Niwa.
Layout/RegionsSelection.html introduced in r159488 was not working in
Mac platform because of it was trying to use mouse events out of the
window dimensions. Use collapse() and extend() methods from Selection
object to solve the issue.
* Layout/resources/regions.js: Use collapse() and extend() instead of
mouse events.
2013-11-27 Ryosuke Niwa <rniwa@webkit.org>
Build fix after r159805.
* resources/runner.js:
2013-11-26 Sergio Villar Senin <svillar@igalia.com>
[CSS Grid Layout] Support grid-definition-{rows|columns} repeat() syntax
https://bugs.webkit.org/show_bug.cgi?id=103312
Reviewed by Andreas Kling.
Use the repeat() syntax to build the huge grids used by the
performance tests.
* Layout/auto-grid-lots-of-data.html:
* Layout/fixed-grid-lots-of-data.html:
2013-11-26 Ryosuke Niwa <rniwa@webkit.org>
Record subtest values in Dromaeo tests
https://bugs.webkit.org/show_bug.cgi?id=124498
Reviewed by Andreas Kling.
Made Dromaeo's test runner report values in DRT.progress via newly added PerfTestRunner.reportValues.
* Dromaeo/resources/dromaeorunner.js:
(.): Moved the definition out of DRT.setup.
(DRT.setup): Ditto.
(DRT.testObject): Extracted from DRT.setup. Set the subtest name and continueTesting.
continueTesting is set true for subtests; i.e. when name is specified.
(DRT.progress): Call PerfTestRunner.reportValues to report subtest results.
(DRT.teardown): Call PerfTestRunner.reportValues instead of measureValueAsync.
* resources/runner.js: Made various changes for newly added PerfTestRunner.reportValues.
(.): Moved the initialization of completedIterations, results, jsHeapResults, and mallocHeapResults into
start since they need to be initialized before running each subtest. Initialize logLines here since we
need to use the same logger for all subtests.
(.start): Initialize the variables mentioned above here. Also respect doNotLogStart used by reportValues.
(ignoreWarmUpAndLog): Added doNotLogProgress. Used by reportValues since it reports all values at once.
(finish): Compute the metric name such as FrameFrame and Runs from unit. Also don't log or notify done
when continueTesting is set on the test object.
(PerfTestRunner.reportValues): Added. Reports all values for the main/sub test.
2013-11-26 Ryosuke Niwa <rniwa@webkit.org>
Remove replay performance tests as it's not actively maintained
https://bugs.webkit.org/show_bug.cgi?id=124764
Reviewed by Andreas Kling.
Removed the replay performance tests. We can add them back when time comes.
* Replay/Chinese/chinaz.com.replay: Removed.
* Replay/Chinese/www.163.com.replay: Removed.
* Replay/Chinese/www.alipay.com.replay: Removed.
* Replay/Chinese/www.baidu.com.replay: Removed.
* Replay/Chinese/www.csdn.net.replay: Removed.
* Replay/Chinese/www.douban.com.replay: Removed.
* Replay/Chinese/www.hao123.com.replay: Removed.
* Replay/Chinese/www.xinhuanet.com.replay: Removed.
* Replay/Chinese/www.xunlei.com.replay: Removed.
* Replay/Chinese/www.youku.com.replay: Removed.
* Replay/English/beatonna.livejournal.com.replay: Removed.
* Replay/English/cakewrecks.blogspot.com.replay: Removed.
* Replay/English/chemistry.about.com.replay: Removed.
* Replay/English/digg.com.replay: Removed.
* Replay/English/en.wikipedia.org-rorschach_test.replay: Removed.
* Replay/English/icanhascheezburger.com.replay: Removed.
* Replay/English/imgur.com-gallery.replay: Removed.
* Replay/English/online.wsj.com.replay: Removed.
* Replay/English/stockoverflow.com-best-comment.replay: Removed.
* Replay/English/www.alibaba.com.replay: Removed.
* Replay/English/www.amazon.com-kindle.replay: Removed.
* Replay/English/www.apple.com.replay: Removed.
* Replay/English/www.cnet.com.replay: Removed.
* Replay/English/www.dailymotion.com.replay: Removed.
* Replay/English/www.ehow.com-prevent-fire.replay: Removed.
* Replay/English/www.filestube.com-amy-adams.replay: Removed.
* Replay/English/www.foxnews.replay: Removed.
* Replay/English/www.huffingtonpost.com.replay: Removed.
* Replay/English/www.imdb.com-twilight.replay: Removed.
* Replay/English/www.mozilla.com-all-order.replay: Removed.
* Replay/English/www.php.net.replay: Removed.
* Replay/English/www.reddit.com.replay: Removed.
* Replay/English/www.telegraph.co.uk.replay: Removed.
* Replay/English/www.w3.org-htmlcss.replay: Removed.
* Replay/English/www.w3schools.com-html.replay: Removed.
* Replay/English/www.youtube.com-music.replay: Removed.
* Replay/French/www.orange.fr.replay: Removed.
* Replay/Italian/www.repubblica.it.replay: Removed.
* Replay/Japanese/2ch.net-newsplus.replay: Removed.
* Replay/Japanese/entameblog.seesaa.net.replay: Removed.
* Replay/Japanese/ja.wikipedia.org.replay: Removed.
* Replay/Japanese/www.hatena.ne.jp.replay: Removed.
* Replay/Japanese/www.livedoor.com.replay: Removed.
* Replay/Japanese/www.nicovideo.jp.replay: Removed.
* Replay/Japanese/www.rakuten.co.jp.replay: Removed.
* Replay/Japanese/www.yahoo.co.jp.replay: Removed.
* Replay/Korean/www.naver.com.replay: Removed.
* Replay/Persian/blogfa.com.replay: Removed.
* Replay/Polish/www.wp.pl.replay: Removed.
* Replay/Portuguese/www.uol.com.br.replay: Removed.
* Replay/Russian/lenta.ru.replay: Removed.
* Replay/Russian/vkontakte.ru-help.replay: Removed.
* Replay/Russian/www.ixbt.com.replay: Removed.
* Replay/Russian/www.kp.ru.replay: Removed.
* Replay/Russian/www.liveinternet.ru.replay: Removed.
* Replay/Russian/www.pravda.ru.replay: Removed.
* Replay/Russian/www.rambler.ru.replay: Removed.
* Replay/Russian/www.ucoz.ru.replay: Removed.
* Replay/Russian/www.yandex.ru.replay: Removed.
* Replay/Spanish/www.taringa.net.replay: Removed.
* Replay/Swedish/www.flashback.se.replay: Removed.
* Replay/Swedish/www.tradera.com.replay: Removed.
* Replay/www.google.com.replay: Removed.
* Replay/www.techcrunch.com.replay: Removed.
* Replay/www.youtube.com.replay: Removed.
2013-11-22 Ryosuke Niwa <rniwa@webkit.org>
Layout Test editing/deleting/password-delete-performance.html is failing
https://bugs.webkit.org/show_bug.cgi?id=124781
Reviewed by Alexey Proskuryakov.
Add a new performance test to replace editing/deleting/password-delete-performance.html.
We skip this test by default since it's a micro benchmark.
* Interactive/DeletingInPasswordField.html: Added.
* Skipped:
2013-11-18 Sergio Villar Senin <svillar@igalia.com>
[CSS Grid Layout] Improve content-sized track layout
https://bugs.webkit.org/show_bug.cgi?id=124408
Reviewed by Dean Jackson.
From Blink r156122 by <jchaffraix@chromium.org>
New test to check the performance of layouting grids with content sized tracks.
* Layout/auto-grid-lots-of-data.html: Added.
2013-11-08 Sergio Villar Senin <svillar@igalia.com>
[CSS Grid Layout] Run the content-sized tracks sizing algorithm only when required
https://bugs.webkit.org/show_bug.cgi?id=124039
Reviewed by Dean Jackson.
From Blink r156028 and r156168 by <jchaffraix@chromium.org>.
New performance tests for layouts in grids with fixed size tracks.
* Layout/fixed-grid-lots-of-data.html: Added.
2013-11-19 Manuel Rego Casasnovas <rego@igalia.com>
[CSS Regions] Add performance test for selection
https://bugs.webkit.org/show_bug.cgi?id=119230
Reviewed by Ryosuke Niwa.
Add new performance test for selection in CSS Regions. It checks a
selection from the first region to the last one, passing through all the
regions.
Test is skipped for now while implementation of selection in CSS Regions
is still evolving.
* Layout/RegionsSelection.html: Added.
* Layout/resources/regions.js:
(.):
* Skipped:
2013-11-18 Ryosuke Niwa <rniwa@webkit.org>
Simplify and reformat the output of performance tests inside test runners
https://bugs.webkit.org/show_bug.cgi?id=124496
Reviewed by Antti Koivisto.
As a preparation to support subtests for Dromaeo and DoYouEvenBench, simplify the output performance tests generate.
Also modernize the output to better support "metric" concept we introduced a while ago.
New output on Dromaeo/dom-attr looks like this:
-----------------------------------------------
Running 5 times
getAttribute -> [1105, 1108, 1134, 1137, 1154]
element.property -> [1634, 1655, 1685, 1696, 1723]
setAttribute -> [646.3536463536464, 651, 651, 656.3436563436563, 658]
element.property = value -> [934, 949, 963, 964, 974]
element.expando = value -> [419, 419.5804195804196, 421.57842157842157, 425.57442557442556, 429]
element.expando -> [501, 517, 519.4805194805194, 521.4785214785214, 525]
1: 117.40644785571585 runs/s
2: 118.84720469666297 runs/s
3: 119.80547640905021 runs/s
4: 120.51886194758805 runs/s
5: 121.51924380569295 runs/s
:Time -> [117.40644785571585, 118.84720469666297, 119.80547640905021, 120.51886194758805, 121.51924380569295] runs/s
mean: 119.619446942942 runs/s
median: 119.80547640905021 runs/s
stdev: 1.5769040458730506 runs/s
min: 117.40644785571585 runs/s
max: 121.51924380569295 runs/s
-----------------------------------------------
* Dromaeo/resources/dromaeorunner.js:
(DRT.progress): Use the new format for subtest reports.
* resources/runner.js:
(.): Declare verboseLogging, which is set to true outside of test runners.
(PerfTestRunner.logInfo): Use verboseLogging instead of directly checking window.testRunner.
(PerfTestRunner.logDetail): Added. Logs informative text with a label such as "mean: 123 s" with 4-space indentation.
(PerfTestRunner.logStatistics): Use logDetail.
(.start): Initialize verboseLogging. Also log "Running 20 times" as an informative log using logDetail.
(.ignoreWarmUpAndLog): Use logDetail for showing the progress. These logs were useless inside test runners anyway
because perftest didn't get to see any output until the test finished running.
(.finish): Call logStatistics with metric name as opposed to a label. Each metric name is now prefixed with ':' to be
distinguishable from subtests, making the new format forward compatible.
2013-11-18 Ryosuke Niwa <rniwa@webkit.org>
[Performance tests] Interactive/SelectAll.html throws an exception
https://bugs.webkit.org/show_bug.cgi?id=124495
Reviewed by Antti Koivisto
Return a boolean indicating whether more values are needed or not in
PerfTestRunner.measureValueAsync so that runTest can terminate gracefully.
* Interactive/SelectAll.html:
(runTest): Don't schedule a timer for runTest if we've got enough values.
* resources/runner.js:
(PerfTestRunner.measureValueAsync): Returns true iff more values are needed.
2013-11-13 Antti Koivisto <antti@apple.com>
This was supposed to test overflow-wrap:break-word instead of word-break:break-all.
Rubber-stamped by Andreas Kling.
* Layout/line-layout-simple.html:
2013-11-12 Andreas Kling <akling@apple.com>
Remove body onload handler from html5-8266.html that was causing
the test to sometimes finish before doing anything interesting.
Unskip Parser/HTML5-8266-FullRender.html now that it's stable.
Rubber-stamped by Antti Koivisto.
* Parser/resources/html5-8266.html:
* Skipped:
2013-11-12 Andreas Kling <akling@apple.com>
Neutralize external resource loads in the new HTML5 spec copy.
Skip Parser/HTML5-8266-FullRender.html until I can make it less flaky.
* Parser/resources/html5-8266.html:
* Skipped:
2013-11-12 Andreas Kling <akling@apple.com>
Import a fresh version of the full HTML5 spec for perf testing.
Rubber-stamped by Antti Koivisto.
* Parser/HTML5-8266-FullRender.html: Added.
* Parser/HTML5-8266-ParseOnly.html: Added.
* Parser/resources/html5-8266.html: Added.
2013-11-09 Antti Koivisto <antti@apple.com>
Add subtest for word-break:break-all to Layout/line-layout-simple.html
https://bugs.webkit.org/show_bug.cgi?id=124103
Reviewed by Andreas Kling.
* Layout/line-layout-simple.html:
Combination "white-space:pre-wrap; word-break:break-all" is common for pure text.
2013-11-08 Antti Koivisto <antti@apple.com>
Add line layout performance test that exercises more cases
https://bugs.webkit.org/show_bug.cgi?id=124041
Reviewed by Anders Carlsson.
The existing line-layout.html covers the most basic left-aligned case only.
Add a test with more coverage for things that are mostly not yet supported by the simple
line layout path:
- centered text
- right aligned text
- justified text
- pre
- white-space:pre-wrap
- text with simple inlines
- text with br
* Layout/line-layout-simple.html: Added.
2013-10-25 Sergio Villar Senin <svillar@igalia.com>
Use a Vector instead of HashSet to computed the orderValues in RenderFlexibleBox
https://bugs.webkit.org/show_bug.cgi?id=118620
Reviewed by Antti Koivisto.
From Blink r152960 by <ojan@chromium.org>
New performance test for layouts in flexboxes.
* Layout/flexbox-lots-of-data.html: Added.
2013-10-24 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r157916.
http://trac.webkit.org/changeset/157916
https://bugs.webkit.org/show_bug.cgi?id=123274
Broke Layout/flexbox-lots-of-data.html on perfbot (Requested
by ap on #webkit).
* Layout/flexbox-lots-of-data.html: Removed.
2013-10-14 Sergio Villar Senin <svillar@igalia.com>
Use a Vector instead of HashSet to computed the orderValues in RenderFlexibleBox
https://bugs.webkit.org/show_bug.cgi?id=118620
Reviewed by Antti Koivisto.
From Blink r152960 by <ojan@chromium.org>
New performance test for layouts in flexboxes.
* Layout/flexbox-lots-of-data.html: Added.
2013-10-06 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Make it work on Internet Explorer 11 Release Preview
https://bugs.webkit.org/show_bug.cgi?id=122406
Reviewed by Darin Adler.
On Internet Explorer 11, $(elem).closest('li').data('id') fails to find the containig li of elem once
the first item is marked complete or deleted until we get back to the event loop in the jQuery/TodoMVC.
Worked around this limitation by overriding app.getTodo to use each item's id computed in advance.
Also use $.text instead of execCommand('InsertText') in FlightJS/MailClient since Internet Explorer
doesn't support execCommand('InsertText'). Also select the recipient to avoid exceptions.
* DoYouEvenBench/benchmark.html:
2013-10-05 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Add Facebook's React TodoMVC test case
https://bugs.webkit.org/show_bug.cgi?id=122379
Reviewed by Andreas Kling.
Add React/TodoMVC as a new test case. Somehow we beat Firefox on this one as well.
* DoYouEvenBench/benchmark.html:
* DoYouEvenBench/todomvc/labs: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower.json: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/LICENSE: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/README.md: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.min.js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/ender.js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/JSXTransformer.js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/bower.json: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.min.js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/bg.png: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/index.html: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/app.jsx: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/footer.jsx: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/todoItem.jsx: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/js/utils.jsx: Added.
* DoYouEvenBench/todomvc/labs/architecture-examples/react/readme.md: Added.
2013-09-25 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Add a test case for FlightJS
https://bugs.webkit.org/show_bug.cgi?id=121926
Reviewed by Antti Koivisto.
Add a FlightJS test case.
* DoYouEvenBench/benchmark.html:
* DoYouEvenBench/benchmark.js:
* DoYouEvenBench/flightjs-example-app: Added.
* DoYouEvenBench/flightjs-example-app/LICENSE.md: Added.
* DoYouEvenBench/flightjs-example-app/README.md: Added.
* DoYouEvenBench/flightjs-example-app/app: Added.
* DoYouEvenBench/flightjs-example-app/app/boot: Added.
* DoYouEvenBench/flightjs-example-app/app/boot/page.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_data: Added.
* DoYouEvenBench/flightjs-example-app/app/component_data/compose_box.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_data/mail_items.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_data/move_to.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_ui: Added.
* DoYouEvenBench/flightjs-example-app/app/component_ui/compose_box.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_ui/folders.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_ui/mail_controls.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_ui/mail_items.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_ui/move_to_selector.js: Added.
* DoYouEvenBench/flightjs-example-app/app/component_ui/with_select.js: Added.
* DoYouEvenBench/flightjs-example-app/app/css: Added.
* DoYouEvenBench/flightjs-example-app/app/css/custom.css: Added.
* DoYouEvenBench/flightjs-example-app/app/data.js: Added.
* DoYouEvenBench/flightjs-example-app/app/templates.js: Added.
* DoYouEvenBench/flightjs-example-app/components: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.css: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.min.css: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/img: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/js: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.js: Added.
* DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.min.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/.gitignore: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/CHANGES: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/LICENSE: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/README.md: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/component.json: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.min.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.min.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/package.json: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/index.html: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/json2.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-array.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-date.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-function.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-object.js: Added.
* DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-string.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/.travis.yml: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/advice.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/component.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/compose.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/index.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/logger.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/registry.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/lib/utils.js: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/tools: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/tools/debug: Added.
* DoYouEvenBench/flightjs-example-app/components/flight/tools/debug/debug.js: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/LICENSE.md: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/README.md: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/bower.json: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-jquery: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib: Added.
* DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js: Added.
* DoYouEvenBench/flightjs-example-app/components/jquery: Added.
* DoYouEvenBench/flightjs-example-app/components/jquery/component.json: Added.
* DoYouEvenBench/flightjs-example-app/components/jquery/composer.json: Added.
* DoYouEvenBench/flightjs-example-app/components/jquery/jquery.js: Added.
* DoYouEvenBench/flightjs-example-app/components/jquery/jquery.min.js: Added.
* DoYouEvenBench/flightjs-example-app/components/mustache: Added.
* DoYouEvenBench/flightjs-example-app/components/mustache/mustache.js: Added.
* DoYouEvenBench/flightjs-example-app/components/requirejs: Added.
* DoYouEvenBench/flightjs-example-app/components/requirejs/require.js: Added.
* DoYouEvenBench/flightjs-example-app/index.html: Added.
* DoYouEvenBench/flightjs-example-app/karma.conf.js: Added.
* DoYouEvenBench/flightjs-example-app/package.json: Added.
* DoYouEvenBench/flightjs-example-app/requireMain.js: Added.
2013-09-19 Ryosuke Niwa <rniwa@webkit.org>
DoYouEvenBench: Indentations in benchmark.js and benchmark.html are all messed up
https://bugs.webkit.org/show_bug.cgi?id=121597
Reviewed by Anders Carlsson.
Fixed indentations.
* DoYouEvenBench/benchmark.html:
* DoYouEvenBench/benchmark.js:
(SimplePromise.prototype.resolve.else):
(SimplePromise.prototype.resolve):
(BenchmarkRunner.waitForElement.resolveIfReady):
(BenchmarkRunner.waitForElement):
(BenchmarkRunner._waitAndWarmUp.Fibonacci):
(BenchmarkRunner._finalize):
2013-09-19 Ryosuke Niwa <rniwa@webkit.org>
Add an AngularJS test to DoYouEvenBench
https://bugs.webkit.org/show_bug.cgi?id=121595
Reviewed by Antti Koivisto.
* DoYouEvenBench/benchmark.html:
* DoYouEvenBench/todomvc/architecture-examples/angularjs: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower.json: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/index.html: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/app.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services/todoStorage.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/readme.md: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/package.json: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/readme.md: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Added.
2013-09-17 Ryosuke Niwa <rniwa@webkit.org>
Add a not completely unrealistic DOM Benchmark
https://bugs.webkit.org/show_bug.cgi?id=121361
Reviewed by Filip Pizlo.
Add a DOM benchmark based on TodoMVC for vanilla JS, Ember.js, Backbone.js, and jQuery.
We'll add more frameworks and demo apps as we go.
* DoYouEvenBench: Added.
* DoYouEvenBench/benchmark.html: Added.
* DoYouEvenBench/benchmark.js: Added.
(SimplePromise):
(SimplePromise.prototype.then):
(SimplePromise.prototype.resolve.else):
(SimplePromise.prototype.resolve):
(BenchmarkRunner.suite):
(BenchmarkRunner.waitForElement.resolveIfReady):
(BenchmarkRunner.waitForElement):
(BenchmarkRunner._removeFrame):
(BenchmarkRunner._appendFrame):
(BenchmarkRunner._waitAndWarmUp.Fibonacci):
(BenchmarkRunner._testName):
(BenchmarkRunner._testItemId):
(BenchmarkRunner.listSuites.button.onclick):
(BenchmarkRunner.listSuites.callNextStep):
(BenchmarkRunner.listSuites):
(BenchmarkState):
(BenchmarkState.prototype.currentSuite):
(BenchmarkState.prototype.currentTest):
(BenchmarkState.prototype.next):
(BenchmarkState.prototype.isFirstTest):
(BenchmarkState.prototype.prepareCurrentSuite.frame.onload):
(BenchmarkRunner.step):
(BenchmarkRunner._runTestAndRecordResults):
(BenchmarkRunner._finalize):
* DoYouEvenBench/todomvc: Added.
* DoYouEvenBench/todomvc/architecture-examples: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower.json: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage/backbone.localStorage.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone/backbone.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery/jquery.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/bg.png: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore/underscore.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/index.html: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/app.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections/todos.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/models: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/models/todo.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers/router.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/views: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/app-view.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/todo-view.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/backbone/readme.md: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower.json: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/bg.png: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/index.html: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/app.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/store.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/todo.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/readme.md: Added.
* DoYouEvenBench/todomvc/architecture-examples/emberjs/test.html: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower.json: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars/handlebars.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery/jquery.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/bg.png: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/css: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/css/app.css: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/index.html: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/js: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/js/app.js: Added.
* DoYouEvenBench/todomvc/architecture-examples/jquery/readme.md: Added.
* DoYouEvenBench/todomvc/license.md: Added.
* DoYouEvenBench/todomvc/readme.md: Added.
* DoYouEvenBench/todomvc/vanilla-examples: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower.json: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/bg.png: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/index.html: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/app.js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/controller.js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/helpers.js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/model.js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/store.js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/view.js: Added.
* DoYouEvenBench/todomvc/vanilla-examples/vanillajs/readme.md: Added.
* Skipped:
2013-09-04 Filip Pizlo <fpizlo@apple.com>
Introduce a version of SunSpider that runs for a really long time (about 1 sec on my machine)
Rubber stamped by Mark Hahnenberg.
This isn't meant for serious VM-to-VM performance comparisons, but it is useful
to see how these benchmarks behave when they're completely warmed up.
* LongSpider: Added.
* LongSpider/3d-cube.js: Added.
(DrawLine):
(CalcCross):
(CalcNormal):
(CreateP):
(MMulti):
(VMulti):
(VMulti2):
(MAdd):
(Translate):
(RotateX):
(RotateY):
(RotateZ):
(DrawQube):
(Loop):
(Init):
* LongSpider/3d-morph.js: Added.
(loops.3500.nx.120.nz.120.morph):
* LongSpider/3d-raytrace.js: Added.
(createVector):
(sqrLengthVector):
(lengthVector):
(addVector):
(subVector):
(scaleVector):
(normaliseVector):
(add):
(sub):
(scalev):
(dot):
(scale):
(cross):
(normalise):
(transformMatrix):
(invertMatrix):
(Triangle):
(Triangle.prototype.intersect):
(Scene):
(Scene.prototype.intersect):
(Scene.prototype.blocked):
(Camera):
(Camera.prototype.generateRayPair):
(renderRows):
(Camera.prototype.render):
(raytraceScene.floorShader):
(raytraceScene):
(arrayToCanvasCommands):
* LongSpider/access-binary-trees.js: Added.
(TreeNode):
(TreeNode.prototype.itemCheck):
(bottomUpTree):
* LongSpider/access-fannkuch.js: Added.
(fannkuch):
* LongSpider/access-nbody.js: Added.
(Body):
(Body.prototype.offsetMomentum):
(Jupiter):
(Saturn):
(Uranus):
(Neptune):
(Sun):
(NBodySystem):
(NBodySystem.prototype.advance):
(NBodySystem.prototype.energy):
* LongSpider/access-nsieve.js: Added.
(pad):
(nsieve):
(sieve):
* LongSpider/bitops-3bit-bits-in-byte.js: Added.
(fast3bitlookup):
(TimeFunc):
* LongSpider/bitops-bits-in-byte.js: Added.
(bitsinbyte):
(TimeFunc):
* LongSpider/bitops-nsieve-bits.js: Added.
(pad):
(primes):
(sieve):
* LongSpider/controlflow-recursive.js: Added.
(ack):
(fib):
(tak):
* LongSpider/crypto-aes.js: Added.
(Cipher):
(SubBytes):
(ShiftRows):
(MixColumns):
(AddRoundKey):
(KeyExpansion):
(SubWord):
(RotWord):
(AESEncryptCtr):
(AESDecryptCtr):
(escCtrlChars):
* LongSpider/crypto-md5.js: Added.
(hex_md5):
(b64_md5):
(str_md5):
(hex_hmac_md5):
(b64_hmac_md5):
(str_hmac_md5):
(md5_vm_test):
(core_md5):
(md5_cmn):
(md5_ff):
(md5_gg):
(md5_hh):
(md5_ii):
(core_hmac_md5):
(safe_add):
(bit_rol):
(str2binl):
(binl2str):
(binl2hex):
(binl2b64):
* LongSpider/crypto-sha1.js: Added.
(hex_sha1):
(b64_sha1):
(str_sha1):
(hex_hmac_sha1):
(b64_hmac_sha1):
(str_hmac_sha1):
(sha1_vm_test):
(core_sha1):
(sha1_ft):
(sha1_kt):
(core_hmac_sha1):
(safe_add):
(rol):
(str2binb):
(binb2str):
(binb2hex):
(binb2b64):
* LongSpider/date-format-tofte.js: Added.
(arrayExists):
(.a):
(.A):
(.B):
(.d):
(.D):
(.F):
(.g):
(.G):
(.h):
(.H):
(.i):
(.j):
(.l):
(.L):
(.m):
(.M):
(.n):
(.O):
(.r):
(.S):
(.s):
(.t):
(.U):
(.W):
(.w):
(.Y):
(.y):
(.z):
(Date.prototype.formatDate):
* LongSpider/date-format-xparb.js: Added.
(Date.prototype.dateFormat):
(Date.createNewFormat):
(Date.getFormatCode):
(Date.parseDate):
(Date.createParser):
(Date.formatCodeToRegex):
(Date.prototype.getTimezone):
(Date.prototype.getGMTOffset):
(Date.prototype.getDayOfYear):
(Date.prototype.getWeekOfYear):
(Date.prototype.isLeapYear):
(Date.prototype.getFirstDayOfMonth):
(Date.prototype.getLastDayOfMonth):
(Date.prototype.getDaysInMonth):
(Date.prototype.getSuffix):
(String.escape):
* LongSpider/math-cordic.js: Added.
(FIXED):
(FLOAT):
(DEG2RAD):
(cordicsincos):
(cordic):
* LongSpider/math-partial-sums.js: Added.
(partial):
* LongSpider/math-spectral-norm.js: Added.
(A):
(Au):
(Atu):
(AtAu):
(spectralnorm):
* LongSpider/string-base64.js: Added.
(toBase64):
(base64ToString):
* LongSpider/string-fasta.js: Added.
(rand):
(makeCumulative):
(fastaRepeat):
(fastaRandom):
* LongSpider/string-tagcloud.js: Added.
(.Array.prototype.toJSONString):
(.Boolean.prototype.toJSONString):
(.Date.prototype.toJSONString):
(.Number.prototype.toJSONString):
(.Object.prototype.toJSONString):
(.):
2013-06-10 Radu Stavila <stavila@adobe.com>
[CSS Regions] Rename region-overflow to region-fragment
https://bugs.webkit.org/show_bug.cgi?id=117397
Renamed -webkit-region-overflow to -webkit-region-fragment according to the new working draft
at http://www.w3.org/TR/2013/WD-css3-regions-20130528/#the-region-fragment-property
Reviewed by Alexander Pavlov.
* Layout/resources/regions.css:
2013-06-05 Zan Dobersek <zdobersek@igalia.com>
Move MemoryInfo under window.internals
https://bugs.webkit.org/show_bug.cgi?id=117197
Reviewed by Ryosuke Niwa.
* resources/runner.js: Remove the setMemoryEnabled call, it's not required anymore as the memory
info is now accessed through window.internals and doesn't need the setting to be enabled to work.
2013-05-30 Ryosuke Niwa <rniwa@webkit.org>
Web Inspector: tests in PerformanceTests/inspector/ are timing out
https://bugs.webkit.org/show_bug.cgi?id=77024
Reviewed by Andreas Kling.
These tests have been disabled for ages and don't conform to the standard format.
* Skipped:
* inspector: Removed.
* inspector/console-300-lines.html: Removed.
* inspector/first-open-elements.html: Removed.
* inspector/first-open-resources.html: Removed.
* inspector/first-open-scripts.html.broken: Removed.
* inspector/heap-snapshot-advanced.html: Removed.
* inspector/heap-snapshot-performance-test.js: Removed.
* inspector/heap-snapshot.html: Removed.
* inspector/inspector-startup-time.html: Removed.
* inspector/network-append-30-requests.html.broken: Removed.
* inspector/performance-test.js: Removed.
* inspector/show-panel.html.broken: Removed.
2013-05-27 Benjamin Poulain <benjamin@webkit.org>
Add a balanced benchmark for QuerySelector
https://bugs.webkit.org/show_bug.cgi?id=116811
Reviewed by Sam Weinig.
The goal of this benchmark is to have an overview of querySelector as typically used
by webpages.
It uses queries similar to what is used by popular websites and applies somewhat
similar weighting for each type of query.
The tree used for the queries is intentionally kept simple to ensure we measure QuerySelector
a not purely the overhead of traversal.
* CSS/QuerySelector.html: Added.
* CSS/resources/query-selector.html: Added.
2013-05-18 Ryosuke Niwa <rniwa@webkit.org>
Add a performance test for copying
https://bugs.webkit.org/show_bug.cgi?id=116394
Reviewed by Andreas Kling.
Added. We're going to skip this test by default since it's such a microbenchmark, and also because
it currently takes 30 minutes to run. As insane as it sounds, each copy takes rouhgly 57 seconds.
Running Interactive/CopyAll.html (1 of 1)
RESULT Interactive: CopyAll: Time= 57618.05 ms
median= 57135.0 ms, stdev= 1542.07271571 ms, min= 55095.0 ms, max= 60913.0 ms
RESULT Interactive: CopyAll: JSHeap= 102811.2 bytes
median= 103272.0 bytes, stdev= 1115.28148913 bytes, min= 100648.0 bytes, max= 103504.0 bytes
RESULT Interactive: CopyAll: Malloc= 446408712.0 bytes
median= 459156772.0 bytes, stdev= 20007346.3266 bytes, min= 415564040.0 bytes, max= 462011928.0 bytes
Finished: 1766.883236 s
* Interactive/CopyAll.html: Added.
* Skipped:
2013-05-13 Seokju Kwon <seokju.kwon@gmail.com>
Web Inspector: Get rid of native-memory-snapshot in performance test
https://bugs.webkit.org/show_bug.cgi?id=116013
Reviewed by Andreas Kling.
Remove native-memory-snapshot.html from PerformanceTests.
* inspector/native-memory-snapshot.html: Removed.
* inspector/performance-test.js:
(initialize_TimeTracker.Timer):
(initialize_TimeTracker.Timer.prototype._dump):
(initialize_TimeTracker.InspectorTest.runPerformanceTest):
2013-04-10 Benjamin Poulain <bpoulain@apple.com>
Mass remove all the empty directories
Rubberstamped by Ryosuke Niwa.
* Bindings/resources: Removed.
2013-04-02 Glenn Adams <glenn@skynav.com>
Need japanese line layout performance test
https://bugs.webkit.org/show_bug.cgi?id=113811
Reviewed by Ryosuke Niwa.
Will be used by https://bugs.webkit.org/show_bug.cgi?id=105692 to test potential performance regression
for Japanese (and other CJK) line break changes.
* Layout/LineLayoutJapanese.html: Added.
* Skipped: Skip this test by default.
2013-03-29 Andrei Bucur <abucur@adobe.com>
[CSS Regions] Add performance tests
https://bugs.webkit.org/show_bug.cgi?id=113303
Reviewed by Antti Koivisto.
Add simple performance tests for regions, without nested named flows: a region chain and a flow article.
The regions.js script is used to generate the tests and can set the following parameters: the number of regions,
the number of paragraphs, the regions width, height, max-height and the propability of a forced break after a paragraph.
The tests are skipped for now. They should be enabled once the regions performance is stable enough to create a baseline.
* Layout/RegionsAuto.html: Added. A few regions with a short article. The regions have auto-height and some
paragraphs (80%) have forced breaks after. Stress test for the auto-height algorithm.
* Layout/RegionsAutoMaxHeight.html: Added. A lot of regions with auto-height and max-height. Tests the impact of
max-height on the auto-height algorithm.
* Layout/RegionsFixed.html: Added. A lot of regions with a long article. Some paragraphs (50%) have forced breaks after.
Stress test for the regions layout algorithm.
* Layout/RegionsFixedShort.html: Added. A lot of short regions with a long content. Tests the impact of unforced breaks
on the layout speed.
* Layout/resources/regions.css: Added.
(.articleInFlow):
(.articleNone):
(.region):
(.contentParagraph):
(.breakAfter):
(.regionContainer):
* Layout/resources/regions.js: Added.
(.):
* Skipped:
2013-03-26 Ryosuke Niwa <rniwa@webkit.org>
Add a performance tests for selecting all content in a document
https://bugs.webkit.org/show_bug.cgi?id=113358
Reviewed by Levi Weintraub.
Add a performance test for selecting all. We wait for paint to happen by setTimeout(~, 0).
Example outputs:
RESULT Interactive: SelectAll: Time= 652.6 ms
median= 644.5 ms, stdev= 54.6177144967 ms, min= 599.0 ms, max= 773.0 ms
RESULT Interactive: SelectAll: Time= 654.4 ms
median= 633.5 ms, stdev= 55.9223145368 ms, min= 600.0 ms, max= 769.0 ms
RESULT Interactive: SelectAll: Time= 657.9 ms
median= 640.0 ms, stdev= 54.1420159833 ms, min= 604.0 ms, max= 774.0 ms
* Interactive/SelectAll.html: Added.
* Skipped:
2013-03-19 Alexei Filippov <alph@chromium.org>
Web Inspector: Fix heap profiler performance tests.
https://bugs.webkit.org/show_bug.cgi?id=112701
Reviewed by Yury Semikhatsky.
The tests were broken by profile types refactoring.
* inspector/heap-snapshot-performance-test.js:
(test.performanceTest.step0):
(test.performanceTest.step1):
2013-03-05 Eric Seidel <eric@webkit.org>
Add html-parser-threaded perf test now that the threaded parser is enabled by default
https://bugs.webkit.org/show_bug.cgi?id=111200
Reviewed by Ryosuke Niwa.
The old srcdoc test no longer triggers the threaded parser due to compatibility fixes.
* Parser/html-parser-threaded.html: Renamed from PerformanceTests/Parser/html-parser-srcdoc.html.
* Skipped: Unfortunately this new test is still skipped too.
2013-03-04 Eric Seidel <eric@webkit.org>
Add PerformanceTest for document startup via iframe append/remove
https://bugs.webkit.org/show_bug.cgi?id=111389
Reviewed by Kentaro Hara.
We'd like pages with lots of iframes to be fast.
This test shows that at least for V8/Chromium we spend
all our time booting v8.
On my 32-core linux machine I see about 70 runs/sec in
Release and 5 runs/sec in Debug.
* DOM/iframe-append-remove.html: Added.
2013-03-03 Ryosuke Niwa <rniwa@webkit.org>
Some perf. tests have variances that differ greatly between runs
https://bugs.webkit.org/show_bug.cgi?id=97510
Reviewed by Benjamin Poulain.
In order to control the number of iterations and processes to use from run-perf-tests, always use 20
iterations on all tests except Dromaeo, where even doing 5 iterations is prohibitively slow, by default.
Without this change, it'll become extremely hard for us to tweak the number of iterations and processes
to use from run-perf-tests.
* Animation/balls.html:
* DOM/DOMTable.html:
* DOM/resources/dom-perf.js:
(runBenchmarkSuite.PerfTestRunner.measureTime):
* Dromaeo/resources/dromaeorunner.js:
* Layout/floats_100_100.html:
* Layout/floats_100_100_nested.html:
* Layout/floats_20_100.html:
* Layout/floats_20_100_nested.html:
* Layout/floats_2_100.html:
* Layout/floats_2_100_nested.html:
* Layout/floats_50_100.html:
* Layout/floats_50_100_nested.html:
* Layout/subtree-detaching.html:
* Parser/html5-full-render.html:
* SVG/SvgHitTesting.html:
* resources/runner.js:
* resources/results-template.html:
2013-02-25 Ryosuke Niwa <rniwa@webkit.org>
Use perf.webkit.org JSON format in results page
https://bugs.webkit.org/show_bug.cgi?id=110842
Reviewed by Benjamin Poulain.
Updated the results page template to use the new JSON format.
Since new JSON format doesn't contain statistics such as stdev and min, added statistics.js to compute
these values. Also use 95% percentile confidence interval instead of standard deviation in various places.
* resources/results-template.html: Added statistics.js as dependency.
(TestResult): Updated to take a metric instead of its test. Replaced stdev() with confidenceIntervalDelta()
now that we have a fancy Statistics class.
(TestRun.webkitRevision):
(PerfTestMetric): Renamed from PerfTest since this object now encapsulates each measurement (such as time,
JS heap, and malloc) in test. Also added a conversion table from a metric name to a unit since new format
doesn't contain units.
(PerfTestMetric.name): Updated to compute the full metric name from test name and metric name, matching
the old behavior.
(PerfTestMetric.isMemoryTest): Explicitly look for 'JSHeap' and 'Malloc' tests.
(PerfTestMetric.smallerIsBetter):
(attachPlot): Deleted the code to deal with tests that don't provide individual iteration measurement
since such tests no longer exist. Also fixed up the code compute y-axis range.
(createTableRow.markupForRun): Updated to use confidenceIntervalDelta() instead of stdev().
(init.addTests): Added. Recursively add metrics.
* resources/statistics.js: Added. Imported from perf.webkit.org.
(Statistics.max):
(Statistics.min):
(Statistics.sum):
(Statistics.squareSum):
(Statistics.sampleStandardDeviation):
(Statistics.supportedConfidenceLevels):
(Statistics.confidenceIntervalDelta):
(Statistics.confidenceInterval):
2013-02-11 Alexei Filippov <alph@chromium.org>
Web Inspector: Split Profiler domain in protocol into Profiler and HeapProfiler
https://bugs.webkit.org/show_bug.cgi?id=108653
Reviewed by Yury Semikhatsky.
Currently CPU and heap profilers share the same domain 'Profiler' in the protocol.
In fact these two profile types have not too much in common. So put each into its own domain.
It should also help when Profiles panel gets split into several tools.
This is the phase 1 which adds InspectorHeapProfilerAgent but doesn't
change the original InspectorProfilerAgent.
* inspector/heap-snapshot-performance-test.js:
(test.performanceTest.cleanup):
2013-02-05 Dominik Röttsches <dominik.rottsches@intel.com>
Add a performance test for arabic line breaking
https://bugs.webkit.org/show_bug.cgi?id=108948
Reviewed by Eric Seidel.
Adding a perfomance test based to exercise the complex
font path used in rendering arabic script.
* Layout/ArabicLineLayout.html: Added.
* Skipped: New test skipped by default as per Ryosuke's request.
2013-01-23 Yury Semikhatsky <yurys@chromium.org>
Web Inspector: some measurements are missing in PerformanceTests/inspector/heap-*.html
https://bugs.webkit.org/show_bug.cgi?id=107687
Reviewed by Pavel Feldman.
* inspector/heap-snapshot-performance-test.js: override methods on JSHeapSnapshot instead
of HeapSnapshot, otherwise overrides from JSHeapSnapshot will rule.
2013-01-18 Ryosuke Niwa <rniwa@webkit.org>
Skip DOM/TraverseChildNodes.html as intended in r140070.
* Skipped:
2013-01-17 Dominic Cooney <dominicc@chromium.org>
Unreviewed, re-land r140051.
I overzealously rolled this out; the test was intended to be
skipped, but was not skipped because of a typo in Skipped. See
<https://bugs.webkit.org/show_bug.cgi?id=107210>
* Parser/html-parser-srcdoc.html: Added.
* Skipped: Big-P Parser.
2013-01-17 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r140051.
http://trac.webkit.org/changeset/140051
https://bugs.webkit.org/show_bug.cgi?id=107210
html-parser-srcdoc.html failing on Chromium Linux Perf and
Chromium Mac Perf with a lot of error spew about blocked
script execution in 'about:srcdoc' (Requested by dominicc on
#webkit).
* Parser/html-parser-srcdoc.html: Removed.
* Skipped:
2013-01-16 Ryosuke Niwa <rniwa@webkit.org>
Remove NodeListsNodeData when it's no longer needed
https://bugs.webkit.org/show_bug.cgi?id=107074
Reviewed by Darin Adler.
Added a micro benchmark to see the benefit of removing NodeListsNodeData.
The test traverses all elements in the html5 specification page and accesses childNodes.
Don't enable this test for now since it's really a micro benchmark specifically
designed to test this patch.
* DOM/TraverseChildNodes.html: Added.
* Skipped: Don't enable newly added test by default.
* resources/results-template.html: Compare against the unscaled unit (e.g. "bytes") as
opposed to scaled units such as "K bytes".
* resources/runner.js:
(.start): Moved the code to call currentTest.setup from measureRunsPerSecondOnce so that
it'll be ran for all test types, namely of PerfTestRunner.measureTime.
(.measureRunsPerSecondOnce):
2013-01-17 Eric Seidel <eric@webkit.org>
Add a version of the html-parser benchmark which uses srcdoc instead of document.write so it tests the threaded parser
https://bugs.webkit.org/show_bug.cgi?id=107158
Reviewed by Ryosuke Niwa.
Currently this test even opts-in to the threaded parser if available.
We'll remove that line when the threaded parser becomes default or goes away.
* Parser/html-parser-srcdoc.html: Added.
2013-01-16 Arnaud Renevier <a.renevier@sisa.samsung.com>
inconsistency in drawImage with target rect negative dimensions.
https://bugs.webkit.org/show_bug.cgi?id=100026
Reviewed by Dean Jackson.
Create a drawImage performance test. There is no significative change
in performance: 27144.6851528 runs/s without the patch; 27153.517612
runs/s with the patch. Test is currently skipped.
* Canvas/drawimage.html: Added.
* Skipped:
2013-01-15 Dominic Cooney <dominicc@chromium.org>
Allow zero values as results from the runFunction.
https://bugs.webkit.org/show_bug.cgi?id=102500
Reviewed by Kentaro Hara.
DOM/DOMWalk.js fails on the Chromium Win perf bot because one or
more parts of the test usually return zero at some point.
* resources/runner.js: Accept merely non-negative results.
2012-12-28 Yury Semikhatsky <yurys@chromium.org>
Web Inspector: rename distanceToWindow to distance
https://bugs.webkit.org/show_bug.cgi?id=105823
Reviewed by Pavel Feldman.
Updated heap profiler performance test after renaming distanceToWindow to distance.
* inspector/heap-snapshot-performance-test.js:
2012-12-18 Hayato Ito <hayato@chromium.org>
Use element.webkitCreateShadowRoot instead of WebKitShadowRoot in PerformanceTests.
https://bugs.webkit.org/show_bug.cgi?id=105256
Reviewed by Dimitri Glazkov.
WebKitShadowRoot constructor was deleted in favor of element.webkitCreateShadowRoot().
* ShadowDOM/ChangingClassNameShadowDOM.html:
* ShadowDOM/ChangingSelect.html:
* ShadowDOM/ContentReprojection.html:
* ShadowDOM/DistributionWithMultipleShadowRoots.html:
* ShadowDOM/LargeDistributionWithLayout.html:
* ShadowDOM/MultipleInsertionPoints.html:
* ShadowDOM/ShadowReprojection.html:
* ShadowDOM/SmallDistributionWithLayout.html:
2012-12-17 Shinya Kawanaka <shinyak@chromium.org>
[Shadow] LargeDistributionWithLayout.html should be updated
https://bugs.webkit.org/show_bug.cgi?id=105242
Reviewed by Ryosuke Niwa.
Since this test was written when distribution took O(N^2). However, now it's almost O(N), so this test finishes
in very short time. We should convert it unit to runs/s.
This test contains a some error to cause test failure, e.g. using obsolete API, so they also should be fixed.
* ShadowDOM/LargeDistributionWithLayout.html:
2012-12-13 Ryosuke Niwa <rniwa@webkit.org>
[chromium perf] DOM/DOMWalk.html failures
https://bugs.webkit.org/show_bug.cgi?id=104866
Reviewed by Eric Seidel.
Use PerfTestRunner.now which in turn uses window.performance.now() when it's available.
* DOM/resources/dom-perf.js:
(Interval.start):
(Interval.stop):
(BenchmarkSuite.prototype.RunSingle):
2012-12-05 Shinya Kawanaka <shinyak@chromium.org>
[Shadow] Performance tests for ShadowDOM distribution
https://bugs.webkit.org/show_bug.cgi?id=103617
Reviewed by Dimitri Glazkov.
We would like to measure ShadowDOM distribution performance in various cases.
In this patch, we add performance tests for several distribution patterns.
* ShadowDOM/ContentReprojection.html: Added.
* ShadowDOM/DistributionWithMultipleShadowRoots.html: Added.
* ShadowDOM/LargeDistributionWithLayout.html: Added.
* ShadowDOM/MultipleInsertionPoints.html: Added.
* ShadowDOM/ShadowReprojection.html: Added.
* ShadowDOM/SmallDistributionWithLayout.html: Added.
2012-12-05 Shinya Kawanaka <shinyak@chromium.org>
[Shadow] Performance tests of distribution for changing className
https://bugs.webkit.org/show_bug.cgi?id=103612
Reviewed by Dimitri Glazkov.
We would like to measure ShadowDOM performance and compare it to the similar functional HTML without using ShadowDOM.
In this patch, we add a case when classNames of distributed elemeents are changed.
* ShadowDOM/ChangingClassName.html: Added.
* ShadowDOM/ChangingClassNameShadowDOM.html: Added.
2012-12-03 Ryosuke Niwa <rniwa@webkit.org>
Dromaeo should report individual test result
https://bugs.webkit.org/show_bug.cgi?id=99800
Reviewed by Eric Seidel.
Made one small modification to Droameo's webrunner.js so that it reports individual runs/s values
for each subtest. This allows us to compute the aggregated run/s for each iteration like other
performance tests.
Also stop measuring memory usage in Dromaeo tests because some Dromaeo tests (e.g. jslib-modify-jquery)
have unrealistic memory usage, and measuring them at the time of teardown doesn't make much sense.
* Animation/balls.html: Fixed typo: measureValueAync.
* Dromaeo/resources/dromaeo/web/webrunner.js:
* Dromaeo/resources/dromaeorunner.js:
(DRT.setup): Call prepareToMeasureValuesAsync so that DRT.teardown can use meausreValueAsync, and log
"Running 5 times". Since the log container will be inserted before iframe, we need to explicitly insert
the iframe as the first child of the body element to avoid logs from affecting the iframe's position.
Also specify the number of iterations by calling PerfTestRunner.iterationCount() so that we may adjust
the number of iterations in PerfTestRunner.
(DRT.progress): Log individual measurement for each subtest.
(DRT.teardown): Compute the aggregated result for each iteration, and log them using measureValueAsync.
* resources/runner.js:
(PerfTestRunner.logStatistics): Merged printStatistics since it's no longer needed after r131638.
(PerfTestRunner): Removed getAndPrintMemoryStatistics since it was used only in Dromaeo tests but
we no longer measure memory usage in Dromaeo tests.
(start): Increment completedRuns from -1 to 0 for Dromaeo tests where we don't want to ignore the initial
measurement. Note that ignoreWarmUpAndLog ignores the measurements for which completedRuns is negative.
(ignoreWarmUpAndLog): We don't measure memory usage in Dromaeo tests. See above.
(PerfTestRunner.iterationCount): Added. This abstraction allows us to auto-adjust the number of iterations from
run-perf-tests in near future.
(PerfTestRunner.measureValueAsync): Renamed from measureValueAync.
2012-11-29 Shinya Kawanaka <shinyak@chromium.org>
[Shadow] Performance tests of distribution for changing select attribute
https://bugs.webkit.org/show_bug.cgi?id=103611
Reviewed by Hajime Morita.
We would like to measure ShadowDOM performance and compare it to the similar functional HTML without using ShadowDOM.
In this patch, we add a case when select attribute of HTMLContentElement is changed.
* ShadowDOM/ChangingSelect.html: Added.
* ShadowDOM/ChangingSelectWithoutShadow.html: Added.
* Skipped:
2012-11-19 Shinya Kawanaka <shinyak@chromium.org>
Changing id, className, or attribute should invalidate distribution
https://bugs.webkit.org/show_bug.cgi?id=100738
Reviewed by Dimitri Glazkov.
Added test code to modify id/class/attribute.
* DOM/ModifyAttribute.html: Added.
* DOM/resources/dom-perf/modify-attribute.js: Added.
(ModifyAttribute.CreateElementToSetUp):
(ModifyAttribute.ModifyId):
(ModifyAttribute.ModifyClass):
(ModifyAttribute.ModifyTitle):
2012-11-14 Ryosuke Niwa <rniwa@webkit.org>
runCount in runner.js should be renamed to iterationCount
https://bugs.webkit.org/show_bug.cgi?id=102208
Reviewed by Tony Chang.
Prior to this patch, there were terminology confusions between "runs" and "iterations".
The term "run" should refer to running a performance test once, and "iteration" should
refer to one measurement in the test. i.e. Executing run-perf-should once will result in
a single "run" of performance tests and each test may execute multiple "iterations"
to complete the run.
Unfortunately, we still overload the meaning of "runs" in "runs/s" (is "function calls/s")
but that could be addressed in a separate patch.
* Animation/balls.html:
* DOM/DOMTable.html:
* DOM/resources/dom-perf.js:
* Layout/floats_100_100.html:
* Layout/floats_100_100_nested.html:
* Layout/floats_20_100.html:
* Layout/floats_20_100_nested.html:
* Layout/floats_2_100.html:
* Layout/floats_2_100_nested.html:
* Layout/floats_50_100.html:
* Layout/floats_50_100_nested.html:
* Layout/subtree-detaching.html:
* Parser/html5-full-render.html:
* SVG/SvgHitTesting.html:
* resources/runner.js:
2012-11-13 Dimitri Glazkov <dglazkov@chromium.org>
Unreviewed, rolling out r134367.
http://trac.webkit.org/changeset/134367
https://bugs.webkit.org/show_bug.cgi?id=100738
Speculative rollout, could have cause Dromaeo setAttribute
perf regression.
* DOM/ModifyAttribute.html: Removed.
* DOM/resources/dom-perf/modify-attribute.js: Removed.
2012-11-12 Shinya Kawanaka <shinyak@chromium.org>
Changing id, className, or attribute should invalidate distribution
https://bugs.webkit.org/show_bug.cgi?id=100738
Reviewed by Dimitri Glazkov.
Added test code to modify id/class/attribute.
* DOM/ModifyAttribute.html: Added.
* DOM/resources/dom-perf/modify-attribute.js: Added.
(ModifyAttribute.CreateElementToSetUp):
(ModifyAttribute.ModifyId):
(ModifyAttribute.ModifyClass):
(ModifyAttribute.ModifyTitle):
2012-11-06 Adam Barth <abarth@webkit.org>
DOMImplementation should use ScriptWrappable
https://bugs.webkit.org/show_bug.cgi?id=101279
Reviewed by Eric Seidel.
This simple PerformanceTest measure how quickly we can access
document.implementation. The goal of this performance test is just to
validate that using ScriptWrappable actually makes the bindings faster.
* Bindings/document-implementation.html: Added.
2012-11-05 Geoffrey Garen <ggaren@apple.com>
WebKit should have performance tests for book chapter reflow
https://bugs.webkit.org/show_bug.cgi?id=101271
Reviewed by Dan Bernstein.
I grabbed a book chapter from the Project Gutenberg front page:
* Layout/chapter-reflow-once.html: Added.
* Layout/chapter-reflow-thrice.html: Added.
* Layout/chapter-reflow-twice.html: Added.
* Layout/chapter-reflow.html: Added.
I also created a torture-test random text generator:
* Layout/chapter-reflow-once-random.html: Added.
2012-10-29 Zoltan Horvath <zoltan@webkit.org>
Turn PageLoad tests into simple performancetests, commit #7 (last)
https://bugs.webkit.org/show_bug.cgi?id=99899
Reviewed by Ryosuke Niwa.
We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
to their new location and adds html/js wrappers for them.
This is the #7 (last) commit of the whole patch.
* PageLoad: Removed.
* PageLoad/svg: Removed.
* PageLoad/svg/LICENSES: Removed.
* PageLoad/svg/files: Removed.
* PageLoad/svg/files/33041-Samurai.svg: Removed.
* PageLoad/svg/files/42450-under the see.svg: Removed.
* PageLoad/svg/files/world-iso.svg: Removed.
* PageLoad/svg/svg.pltsuite: Removed.
* SVG/Samurai.html: Added.
* SVG/UnderTheSee.html: Added.
* SVG/WorldIso.html: Added.
* SVG/resources/LICENSES: Copied from PerformanceTests/PageLoad/svg/LICENSES.
* SVG/resources/Samurai.svg: Copied from PerformanceTests/PageLoad/svg/files/33041-Samurai.svg.
* SVG/resources/UnderTheSee.svg: Copied from PerformanceTests/PageLoad/svg/files/42450-under%20the%20see.svg.
* SVG/resources/WorldIso.svg: Copied from PerformanceTests/PageLoad/svg/files/world-iso.svg.
* SVG/resources/svg.pltsuite: Copied from PerformanceTests/PageLoad/svg/svg.pltsuite.
* Skipped: Rename the files on the skipped list also.
2012-10-26 Eric Seidel <eric@webkit.org>
Add a microbenchmark for Hindi (complex-text) line-layout
https://bugs.webkit.org/show_bug.cgi?id=100024
Reviewed by Ryosuke Niwa.
I wrote this to make sure that we don't regress line-breaking performance
for the complex-text codepath. This test has shown me that TOT is
already 5% slower than Safari 6.0.1 here. :(
* Layout/hindi-line-layout.html: Added.
2012-10-26 Zoltan Horvath <zoltan@webkit.org>
Turn PageLoad tests into simple performancetests, commit #6
https://bugs.webkit.org/show_bug.cgi?id=99899
Reviewed by Ryosuke Niwa.
We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
to their new location and adds html/js wrappers for them.
This is the #6 commit of the whole patch.
* PageLoad/svg/files/gearflowers.svg: Removed.
* PageLoad/svg/files/hereGear4.svg: Removed.
* PageLoad/svg/files/worldcup.svg: Removed.
* SVG/GearFlowers.html: Added.
* SVG/HereGear.html: Added.
* SVG/Worldcup.html: Added.
* SVG/resources/GearFlowers.svg: Copied from PerformanceTests/PageLoad/svg/files/gearflowers.svg.
* SVG/resources/HereGear.svg: Copied from PerformanceTests/PageLoad/svg/files/hereGear4.svg.
* SVG/resources/Worldcup.svg: Copied from PerformanceTests/PageLoad/svg/files/worldcup.svg.
* Skipped: Rename the files on the skipped list also.
2012-10-26 Zoltan Horvath <zoltan@webkit.org>
Turn PageLoad tests into simple performancetests, commit #5
https://bugs.webkit.org/show_bug.cgi?id=99899
Reviewed by Ryosuke Niwa.
We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
to their new location and adds html/js wrappers for them.
This is the #5 commit of the whole patch.
* PageLoad/svg/files/Harvey_Rayner.svg: Removed.
* PageLoad/svg/files/Sierpinski_carpet_6.svg: Removed.
* PageLoad/svg/files/mtsthelens.svg: Removed.
* PageLoad/svg/files/mtsthelens0.jpg: Removed.
* SVG/HarveyRayner.html: Added.
* SVG/MtSaintHelens.html: Added.
* SVG/SierpinskiCarpet.html: Added.
* SVG/resources/HarveyRayner.svg: Copied from PerformanceTests/PageLoad/svg/files/Harvey_Rayner.svg.
* SVG/resources/MtSaintHelens.svg: Copied from PerformanceTests/PageLoad/svg/files/mtsthelens.svg.
* SVG/resources/SierpinskiCarpet.svg: Copied from PerformanceTests/PageLoad/svg/files/Sierpinski_carpet_6.svg.
* SVG/resources/mtsthelens0.jpg: Copied from PerformanceTests/PageLoad/svg/files/mtsthelens0.jpg.
* Skipped: Rename the files on the skipped list also.
2012-10-25 Zoltan Horvath <zoltan@webkit.org>
Turn PageLoad tests into simple performancetests, commit #4
https://bugs.webkit.org/show_bug.cgi?id=99899
Reviewed by Ryosuke Niwa.
We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
to their new location and adds html/js wrappers for them.
This is the #4 commit of the whole patch.
* PageLoad/svg/files/france.svg: Removed.
* PageLoad/svg/files/francobollo_gnome_ezechi_02.svg: Removed.
* SVG/France.html: Added.
* SVG/FrancoBolloGnomeEzechi.html: Added.
* SVG/resources/France.svg: Copied from PerformanceTests/PageLoad/svg/files/france.svg.
* SVG/resources/FrancoBolloGnomeEzechi.svg: Copied from PerformanceTests/PageLoad/svg/files/francobollo_gnome_ezechi_02.svg.
* Skipped: Rename the files on the skipped list also.
2012-10-25 Zoltan Horvath <zoltan@webkit.org>
Turn PageLoad tests into simple performancetests, commit #3
https://bugs.webkit.org/show_bug.cgi?id=99899
Reviewed by Ryosuke Niwa.
We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
to their new location and adds html/js wrappers for them.
This is the #3 commit of the whole patch.
* PageLoad/svg/files/42470-flower_from_my_garden_v2.svg: Removed.
* PageLoad/svg/files/44057-drops on a blade.svg: Removed.
* PageLoad/svg/files/deb9frac1.svg: Removed.
* PageLoad/svg/files/food_leif_lodahl_01.svg: Removed.
* SVG/Debian.html: Added.
* SVG/DropsOnABlade.html: Added.
* SVG/FlowerFromMyGarden.html: Added.
* SVG/FoodLeifLodahl.html: Added.
* SVG/resources/Debian.svg: Copied from PerformanceTests/PageLoad/svg/files/deb9frac1.svg.
* SVG/resources/DropsOnABlade.svg: Copied from PerformanceTests/PageLoad/svg/files/44057-drops%20on%20a%20blade.svg.
* SVG/resources/FlowerFromMyGarden.svg: Copied from PerformanceTests/PageLoad/svg/files/42470-flower_from_my_garden_v2.svg.
* SVG/resources/FoodLeifLodahl.svg: Copied from PerformanceTests/PageLoad/svg/files/food_leif_lodahl_01.svg.
2012-10-24 Zoltan Horvath <zoltan@webkit.org>
Turn PageLoad tests into simple performancetests, commit #2
https://bugs.webkit.org/show_bug.cgi?id=99899
Reviewed by Ryosuke Niwa.
We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
to their new location and adds html/js wrappers for them.
This is the #2 commit of the whole patch.
* PageLoad/svg/files/cacuts_01.svg: Removed.
* PageLoad/svg/files/cowboy.svg: Removed.
* PageLoad/svg/files/crawfish2_ganson.svg: Removed.
* SVG/Cactus.html: Added.
* SVG/Cowboy.html: Added.
* SVG/CrawFishGanson.html: Added.
* SVG/resources/Cactus.svg: Copied from PerformanceTests/PageLoad/svg/files/cacuts_01.svg.
* SVG/resources/Cowboy.svg: Copied from PerformanceTests/PageLoad/svg/files/cowboy.svg.
* SVG/resources/CrawFishGanson.svg: Copied from PerformanceTests/PageLoad/svg/files/crawfish2_ganson.svg.
* Skipped: Remove az-lizard_benji_park_01.svg from the skipped list.
2012-10-24 Zoltan Horvath <zoltan@webkit.org>
Turn PageLoad tests into simple performancetests, commit #1
https://bugs.webkit.org/show_bug.cgi?id=99899
Reviewed by Ryosuke Niwa.
We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
to their new location and adds html/js wrappers for them.
This is the #1 commit of the whole patch.
* PageLoad/svg/files/az-lizard_benji_park_01.svg: Removed.
* PageLoad/svg/files/bamboo_01.svg: Removed.
* SVG/AzLizardBenjiPark.html: Added.
* SVG/Bamboo.html: Added.
* SVG/resources: Added.
* SVG/resources/AzLizardBenjiPark.svg: Copied from PerformanceTests/PageLoad/svg/files/az-lizard_benji_park_01.svg.
* SVG/resources/Bamboo.svg: Copied from PerformanceTests/PageLoad/svg/files/bamboo_01.svg.
2012-10-24 Zoltan Horvath <zoltan@webkit.org>
REGRESSION(r131982): Skip SVG/SvgNestedUse.html performancetest since it is crashing
https://bugs.webkit.org/show_bug.cgi?id=100262
Unreviewed.
Skip until proper fix.
* Skipped: Add SVG/SvgNestedUse.html
2012-10-23 Zoltan Horvath <zoltan@webkit.org>
Store the loaded file locally in measurePageLoadTime
https://bugs.webkit.org/show_bug.cgi?id=100172
Reviewed by Csaba Osztrogonác.
Store the loaded file as a local variable instead of attaching it to the test object.
Handle chunkSize inside test.run.
* resources/runner.js:
(.):
2012-10-23 Zoltan Horvath <zoltan@webkit.org>
Add measurePageLoadTime function to PerfTestRunner
https://bugs.webkit.org/show_bug.cgi?id=100029
Reviewed by Ryosuke Niwa.
Adopt chunk based loading logic from html5-full-render.html into measurePageLoadTime function,
this is needed to measure the performance and the memory consumption of the PageLoadTests as
we do it for all other performancetests.
* Parser/html5-full-render.html: Move the behavior to runner.js.
* resources/runner.js:
(.): Add measurePageLoadTime function.
2012-10-22 Adam Barth <abarth@webkit.org>
[V8] Vastly simplify V8GCController's NodeVisitor
https://bugs.webkit.org/show_bug.cgi?id=99884
Reviewed by Kentaro Hara.
Adds some performance tests for the garbage collector.
* Bindings/gc-forest.html: Added.
* Bindings/gc-mini-tree.html: Added.
* Bindings/gc-tree.html: Added.
2012-10-17 Ryosuke Niwa <rniwa@webkit.org>
Bump up the number of iterations of html5-full-render to 5
https://bugs.webkit.org/show_bug.cgi?id=99657
Reviewed by Andreas Kling.
Now that html5-full-render.html runs in less than 15 seconds after r131553,
we can afford to get 5 instead of 2 samples.
* Parser/html5-full-render.html:
2012-10-17 Ryosuke Niwa <rniwa@webkit.org>
Rename PerfTestRunner.runPerSecond to PerfTestRunner.measureRunsPerSecond for consistency
https://bugs.webkit.org/show_bug.cgi?id=99642
Reviewed by Dirk Pranke.
Renamed the method.
* Bindings/append-child.html:
* Bindings/create-element.html:
* Bindings/event-target-wrapper.html:
* Bindings/first-child.html:
* Bindings/get-attribute.html:
* Bindings/get-element-by-id.html:
* Bindings/get-elements-by-tag-name.html:
* Bindings/id-getter.html:
* Bindings/id-setter.html:
* Bindings/insert-before.html:
* Bindings/node-list-access.html:
* Bindings/scroll-top.html:
* Bindings/set-attribute.html:
* Bindings/typed-array-construct-from-array.html:
* Bindings/typed-array-construct-from-same-type.html:
* Bindings/typed-array-construct-from-typed.html:
* Bindings/typed-array-set-from-typed.html:
* Bindings/undefined-first-child.html:
* Bindings/undefined-get-element-by-id.html:
* Bindings/undefined-id-getter.html:
* CSS/CSSPropertySetterGetter.html:
* CSS/CSSPropertyUpdateValue.html:
* CSS/PseudoClassSelectors.html:
* DOM/textarea-dom.html:
* DOM/textarea-edit.html:
* Interactive/resources/window-resize.js:
* Layout/flexbox-column-nowrap.html:
* Layout/flexbox-column-wrap.html:
* Layout/flexbox-row-nowrap.html:
* Layout/flexbox-row-wrap.html:
* Layout/line-layout.html:
* Parser/css-parser-yui.html:
* Parser/innerHTML-setter.html:
* Parser/query-selector-deep.html:
* Parser/query-selector-first.html:
* Parser/query-selector-last.html:
* Parser/simple-url.html:
* Parser/textarea-parsing.html:
* Parser/tiny-innerHTML.html:
* Parser/url-parser.html:
* Parser/xml-parser.html:
* SVG/SvgNestedUse.html:
* resources/runner.js:
2012-10-17 Ryosuke Niwa <rniwa@webkit.org>
Performance test should support asynchronous tests
https://bugs.webkit.org/show_bug.cgi?id=95668
Reviewed by Dirk Pranke.
Added PerfTestRunner.prepareToMeasureValuesAsync and PerfTestRunner.measureValueAsync,
and deployed it in Animation/balls.
* Animation/balls.html:
* resources/runner.js:
2012-10-16 Elliott Sprehn <esprehn@chromium.org>
html5-full-render.html test uses substring but meant substr
https://bugs.webkit.org/show_bug.cgi?id=99495
Reviewed by Adam Barth.
This test intended to chunk up the HTML5 spec into chunks of 500k chars, but used
substring(to,from) instead of substr(from,length) so it actually loaded 5x more
content than was in the HTML5 spec.
* Parser/html5-full-render.html:
2012-10-11 James Simonsen <simonjam@chromium.org>
unprefix window.performance.webkitNow()
https://bugs.webkit.org/show_bug.cgi?id=88278
Reviewed by Tony Gentilcore.
* resources/runner.js: Bind to proper object to avoid invalid invocation errors.
2012-10-08 Ryosuke Niwa <rniwa@webkit.org>
Skip Layout/subtree-detaching.html temporarily as it's very noisy and
takes 112s to run on Chromium Mac. This is tracked by the bug 98708.
* Skipped:
2012-10-08 Ryosuke Niwa <rniwa@webkit.org>
Perf. test results page is broken when runs have different sets of tests
https://bugs.webkit.org/show_bug.cgi?id=98691
Reviewed by Daniel Bates.
Add "missing" columns for tests that are missing some runs.
Also fix regressions from the previous patch:
- Make reference run switch work again
- Load jquery plugins from the remote server when the jquery is loaded from the remote server.
* resources/results-template.html:
2012-10-08 Ryosuke Niwa <rniwa@webkit.org>
Perf test pesults page takes forever to load on a machine with a slow Internet connection
https://bugs.webkit.org/show_bug.cgi?id=98561
Reviewed by Ojan Vafai.
Try loading jquery both locally and remotely, and use the same method to load the remaining
jquery plugins when either one succeeds.
* resources/results-template.html:
2012-10-04 Hayato Ito <hayato@chromium.org>
[Refactoring] Introduce a traversal strategy in SelectorChecker
https://bugs.webkit.org/show_bug.cgi?id=97298
Reviewed by Antti Koivisto.
Introduces querySelector() performance tests to check SelectorChecker performance.
* CSS/PseudoClassSelectors.html: Added.
2012-10-03 Philip Rogers <pdr@google.com>
Force GC between PageLoad tests.
https://bugs.webkit.org/show_bug.cgi?id=98203
Reviewed by Ryosuke Niwa.
Previously, our PageLoad PerfTests had multi-modal distributions,
typically with a small cluster at 1-2x the median. This turned out
to be caused by not garbage collecting between tests!
This patch adds a new file, force-gc.html, and loads this file between
PageLoad tests to force a GC. I manually verified that this cleans up
our perf test outliers.
* resources/force-gc.html: Added.
2012-10-03 Julien Chaffraix <jchaffraix@webkit.org>
Add a performance test for subtree detaching
https://bugs.webkit.org/show_bug.cgi?id=98281
Reviewed by Eric Seidel.
The new test tries to stress detaching on a heavy subtree (2 levels deep but with 1,000 nodes per level).
We set display: none on the root and measure the time it takes to update the tree. Note that we will also
measure the time taken by recalcStyle and relayout but I don't think we can avoid that.
* Layout/subtree-detaching.html: Added.
2012-10-02 Ryosuke Niwa <rniwa@webkit.org>
Build fix after r130135. Dromaeo tests only report single memory value,
and computeStatistics should report variance as 0 in such cases.
* resources/runner.js:
2012-10-02 Philip Rogers <pdr@google.com>
Fix PerfTest standard deviation calculation.
https://bugs.webkit.org/show_bug.cgi?id=98115
Reviewed by Ryosuke Niwa.
Previously our standard deviation calculation was incorrect. This patch
updates perftest.py's algorithm to calculate the sample standard deviation
(with Bessel's correction) using Knuth's online algorithm:
http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm
An existing test has been modified to prove our new results.
This patch also updates runner.js to use Bessel's correction in
its sample standard deviation calculation, which is more accurate
for small sample sizes.
Additionally, runner.js has been modified to not calculate
the 'sum' statistic, which was not very useful.
* resources/runner.js:
(PerfTestRunner.computeStatistics):
2012-10-01 Ryosuke Niwa <rniwa@webkit.org>
PerfTestRunner: Move all functions into the closure and always use double quotation for string literals
https://bugs.webkit.org/show_bug.cgi?id=98093
Reviewed by Ojan Vafai.
Move all methods of PerfTestRunner into the closure that defines it.
Also always use double quotations for string literals for consistency.
* resources/runner.js:
2012-10-01 Ryosuke Niwa <rniwa@webkit.org>
Encapsulate private properties in PerfTestRunner better
https://bugs.webkit.org/show_bug.cgi?id=97833
Reviewed by Ojan Vafai.
This patch moves "private" methods and properties of PerfTestRunner into a closure so that they're
inaccssible from outside. Also catch exceptions from test.run, test.done, and other runner code
to ensure we call notifyDone() even if we broke tests. Otherwise DRT will timeout and we end up
waiting for 10 minutes per each broken test on bots.
* resources/runner.js:
(PerfTestRunner.gc):
(logInDocument): Extracted from PerfTestRunner.log.
(PerfTestRunner.log): Moved.
(logFatalError): Added.
(start): Renamed from PerfTestRunner._start.
(scheduleNextRun): Extracted from PerfTestRunner._runLoop. Also catch any exceptions that happen
in the runner and ignoreWarmUpAndLog so that we don't end up timing out. We call logFatalError in
such cases, which in turn ensures notifyDone() is called.
(ignoreWarmUpAndLog): Renamed from PerfTestRunner._ignoreWarmUpAndLog.
(finish): Extracted from PerfTestRunner._runLoop.
(PerfTestRunner.measureTime): Moved. The initialization of runCount is moved into start().
(measureTimeOnce): Renamed from PerfTestRunner._measureTimeOnce.
(PerfTestRunner.runPerSecond): Moved. Ditto about runCount.
(measureRunsPerSecondOnce): Renamed from PerfTestRunner._measureRunsPerSecondOnce.
(callRunAndMeasureTime): Renamed from PerfTestRunner._perSecondRunnerIterator.
2012-10-01 Florin Malita <fmalita@chromium.org>
Add a performance test for nested <use> elements
https://bugs.webkit.org/show_bug.cgi?id=98047
Reviewed by Ryosuke Niwa.
Currently at ~5 runs per second on my workstation, but should go up significantly (100+)
after landing a fix for https://bugs.webkit.org/show_bug.cgi?id=97905.
* SVG/SvgNestedUse.html: Added.
2012-09-28 Ryosuke Niwa <rniwa@webkit.org>
Add back test.runCount for runPerSecond as it's used by tests in fast/harness/perftests.
* resources/runner.js:
(PerfTestRunner.runPerSecond):
2012-09-27 Ryosuke Niwa <rniwa@webkit.org>
Build fix after r129824.
* DOM/resources/dom-perf.js:
(runBenchmarkSuite):
2012-09-27 Ryosuke Niwa <rniwa@webkit.org>
Remove unused features and reduce code duplications in PerfTestRunner
https://bugs.webkit.org/show_bug.cgi?id=97852
Reviewed by Kentaro Hara.
Made the following refactoring changes:
- Remove PerfTestRunner.info since it's never used.
- Moved the js heap/malloc related functions up to where they belong.
- Moved the initialization of _callsPerIteration, _test, and -description into _start,
and stopped initializing _runFunction and _doneFunction since both test times now
use _test object.
- Made _measureTimeOnce and _measureRunsPerSecondOnce return the measured value
instead of calling ignoreWarmUpAndLog and _runLoop to share the code; they're now
called in _measureRunsPerSecondOnce.
* resources/runner.js:
(PerfTestRunner.storeHeapResults): Moved.
(PerfTestRunner.getUsedMallocHeap): Moved.
(PerfTestRunner.getUsedJSHeap): Moved.
(PerfTestRunner.getAndPrintMemoryStatistics): Moved.
(PerfTestRunner._scheduleNextMeasurementOrNotifyDone): Renamed from _runLoop. Calls
ignoreWarmUpAndLog and schedules the next call.
(PerfTestRunner._measureTimeOnce): Renamed from _runner.
(PerfTestRunner._start): Renamed from initAndStartLoop.
(PerfTestRunner.measureTime):
(PerfTestRunner.runPerSecond):
(PerfTestRunner._measureRunsPerSecondOnce): Renamed from _measureRunsPerSecondOnce.
(PerfTestRunner._perSecondRunnerIterator):
2012-09-27 Ryosuke Niwa <rniwa@webkit.org>
PerfTestRunner.run should take an object
https://bugs.webkit.org/show_bug.cgi?id=97743
Reviewed by Kentaro Hara.
Rename PerfTestRunner.run to PerfTestRunner.measureTime and make it take an object instead of
5 arguments. Also get rid of PerfTestRunner._loopsPerRun since it's no longer used (it's always 1).
* CSS/StyleSheetInsert.html:
* DOM/resources/dom-perf.js:
* Layout/floats_100_100.html:
* Layout/floats_100_100_nested.html:
* Layout/floats_20_100.html:
* Layout/floats_20_100_nested.html:
* Layout/floats_2_100.html:
* Layout/floats_2_100_nested.html:
* Layout/floats_50_100.html:
* Layout/floats_50_100_nested.html:
* Parser/html-parser.html:
* Parser/html5-full-render.html:
* SVG/SvgCubics.html:
* SVG/SvgHitTesting.html:
* resources/runner.js:
2012-09-27 Ryosuke Niwa <rniwa@webkit.org>
PerformanceTests/CSS/StyleSheetInsert.html has a time-dependent non-Gaussian distribution
https://bugs.webkit.org/show_bug.cgi?id=97741
Reviewed by Antti Koivisto.
Reset the content in the iframe in each run so that the runtime from each run follows a normal distribution.
We can cleanup this code once my patch to replace the argument list of run by an object is landed.
* CSS/StyleSheetInsert.html:
2012-09-27 Ryosuke Niwa <rniwa@webkit.org>
Unreviewed. Minor appearance tweaks after r129813.
* resources/results-template.html:
2012-09-27 Ryosuke Niwa <rniwa@webkit.org>
Results page should warn about time-dependent distributions
https://bugs.webkit.org/show_bug.cgi?id=97818
Reviewed by Ojan Vafai.
Add a simple linear regression analysis on results page to detect time-dependent distributions.
We add a warning sign (inline SVG) when the regression gave us a slope of at least 0.01 and a R^2 of at least 0.6.
Also added time-series graphs per run under the bar graphs so that humans can manually inspect them.
A nice follow up would be to add some normality test (e.g. Shapiro-Wilk) to detect bi-modal distributions
but we probably need to restructure the code to run it asynchronously since normality tests are slow.
* resources/results-template.html:
2012-09-26 Ryosuke Niwa <rniwa@webkit.org>
Use runPerSecond in PerformanceTests/Bindings/typed-array* and event-target-wrapper
https://bugs.webkit.org/show_bug.cgi?id=97625
Reviewed by Eric Seidel.
Use PerfTestRunner.runPerSecond instead of PerfTestRunner.run. Also reduce the fixed number of
elements and iterations in these tests by a factor of 10 since runPerSecond can dynamically
adjust the number of function calls.
* Bindings/event-target-wrapper.html:
* Bindings/typed-array-construct-from-array.html:
* Bindings/typed-array-construct-from-same-type.html:
* Bindings/typed-array-construct-from-typed.html:
* Bindings/typed-array-set-from-typed.html:
2012-09-25 Antti Koivisto <antti@apple.com>
Optimize stylesheet insertions
https://bugs.webkit.org/show_bug.cgi?id=97627
Reviewed by Andreas Kling.
Add synthetic performance test for avoiding style recalcs on stylesheet inserts.
* CSS/StyleSheetInsert.html: Added.
2012-09-25 Ryosuke Niwa <rniwa@webkit.org>
Skip Dromaeo/jslib-modify-jquery.html per bug 95376.
It runs out of memory on Chromium port, and it takes unreasonably long time (~5 minutes)
to run on other ports.
* Skipped:
2012-09-20 Ryosuke Niwa <rniwa@webkit.org>
Results page should show indivisual value
https://bugs.webkit.org/show_bug.cgi?id=97178
Reviewed by Tony Chang.
Show indivisual values instead of statistics (min, max, stdev).
* resources/results-template.html:
2012-09-20 Ryosuke Niwa <rniwa@webkit.org>
run-perf-tests should record individual value instead of statistics
https://bugs.webkit.org/show_bug.cgi?id=97155
Reviewed by Hajime Morita.
Report the list of values as "values" so that run-perf-tests can parse them.
* resources/runner.js:
(PerfTestRunner.computeStatistics):
(PerfTestRunner.printStatistics):
2012-09-20 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r129091.
http://trac.webkit.org/changeset/129091
https://bugs.webkit.org/show_bug.cgi?id=97205
It broke perf tests everywhere (Requested by Ossy on #webkit).
* resources/runner.js:
(PerfTestRunner.computeStatistics):
(PerfTestRunner.printStatistics):
2012-09-19 Ryosuke Niwa <rniwa@webkit.org>
run-perf-tests should record indivisual value instead of statistics
https://bugs.webkit.org/show_bug.cgi?id=97155
Reviewed by Hajime Morita.
Report the list of values as "values" so that run-perf-tests can parse them.
* resources/runner.js:
(PerfTestRunner.computeStatistics):
(PerfTestRunner.printStatistics):
2012-09-17 Ryosuke Niwa <rniwa@webkit.org>
Perf test results is incomprehensive
https://bugs.webkit.org/show_bug.cgi?id=94668
Reviewed by Eric Seidel.
Overhauled the results page to have a tabular view. Clicking on each row shows a flot graph we used to have.
For each run and test, we show the mean value with the standard deviation along with the percent difference
against the reference run chosen by the user if the difference is statistically significant; it also indicates
whether the new value is progression or not.
The unit of each test is adjusted automatically using SI prefixes (Kilo, Mega, Milli), and rows can be sorted
by each column. Time and memory results are separated into two tabs.
* resources/jquery.tablesorter.min.js: Added.
* resources/results-template.html:
2012-09-14 Ryosuke Niwa <rniwa@webkit.org>
Use performance.webkitNow in PerfTestRunner
https://bugs.webkit.org/show_bug.cgi?id=92826
Reviewed by Eric Seidel.
Use performance.webkitNow with Date.now as a fallback for more accurate time measurements.
* resources/runner.js:
(PerfTestRunner._runner):
(PerfTestRunner._perSecondRunnerIterator):
2012-09-14 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r128562.
http://trac.webkit.org/changeset/128562
https://bugs.webkit.org/show_bug.cgi?id=96747
It broke perf tests on Qt and Chromium (Requested by Ossy on
#webkit).
* resources/runner.js:
(PerfTestRunner._runner):
(PerfTestRunner._perSecondRunnerIterator):
2012-09-14 Ryosuke Niwa <rniwa@webkit.org>
Use performance.webkitNow in PerfTestRunner
https://bugs.webkit.org/show_bug.cgi?id=92826
Reviewed by Eric Seidel.
Use performance.webkitNow with Date.now as a fallback for more acurate time measurements.
* resources/runner.js:
(PerfTestRunner._runner):
(PerfTestRunner._perSecondRunnerIterator):
2012-08-23 Ilya Tikhonovsky <loislo@chromium.org>
WebInspector: unreviewed single line test fix.
The test has to open profiles panel explicitly because it is creating lazily.
* inspector/heap-snapshot-performance-test.js:
2012-08-15 Scott Graham <scottmg@chromium.org>
Rename window.internals.fastMallocStatistics to mallocStatistics
https://bugs.webkit.org/show_bug.cgi?id=94033
Reviewed by Adam Barth.
* resources/runner.js:
(PerfTestRunner.storeHeapResults):
(PerfTestRunner.getUsedMallocHeap):
(PerfTestRunner.getAndPrintMemoryStatistics):
(PerfTestRunner.initAndStartLoop):
2012-08-10 Ryosuke Niwa <rniwa@webkit.org>
Unreviewed; fix an insanely silly typo.
* resources/results-template.html:
2012-08-09 Ryosuke Niwa <rniwa@webkit.org>
Another build fix after r125178.
* resources/runner.js:
2012-08-09 Zoltan Horvath <zoltan@webkit.org>
Add memory measurement to balls.html and dromaeorunner.js
https://bugs.webkit.org/show_bug.cgi?id=93617
Reviewed by Adam Barth.
Since we added memory measurement support to performance tests we need to modify these tests.
* Animation/balls.html:
* Dromaeo/resources/dromaeorunner.js:
2012-08-09 Zoltan Horvath <zoltan@webkit.org>
JSHeap and FastMallocStatistics based memory measurement for performance-tests
https://bugs.webkit.org/show_bug.cgi?id=90858
Reviewed Ryosuke Niwa.
Measure the memory usage of the performancetests with the help of the windows.memory.usedJSHeapSize
object and the window.internals.fastMallocStatistics() function call.
* resources/runner.js:
(PerfTestRunner.logStatistics):
(PerfTestRunner.printStatistics):
(PerfTestRunner.storeHeapResults):
(PerfTestRunner.getUsedFastMallocHeap):
(PerfTestRunner.getUsedJSHeap):
(PerfTestRunner.getAndPrintMemoryStatistics):
(PerfTestRunner.ignoreWarmUpAndLog):
(PerfTestRunner.initAndStartLoop):
2012-08-08 Benjamin Poulain <benjamin@webkit.org>
Calling internals from the performance test runner prevents manual running
https://bugs.webkit.org/show_bug.cgi?id=93527
Reviewed by Ryosuke Niwa.
Since r125065, it is impossible to run the Performance tests manually. The problem is
"internals" is not defined when running outside the test runner, so the whole script
evaluation fails.
* resources/runner.js: Verify is window.internals is available before invoking something on it.
2012-08-08 Zoltan Horvath <zoltan@webkit.org>
Set access to MemoryInfo enabled for the performance tests
https://bugs.webkit.org/show_bug.cgi?id=92498
Reviewed by Ryosuke Niwa.
We need access to console.memory for the memory measurements.
* resources/runner.js:
2012-08-07 Ryosuke Niwa <rniwa@webkit.org>
run-perf-tests should support --no-show-results
https://bugs.webkit.org/show_bug.cgi?id=93409
Reviewed by Dirk Pranke.
Add a flot as a separate file and load it as an external resource.
Also include scripts as external resources from both local filesystem and webkit.org
so that it continues to work regardless of where you put it.
It breaks when someone else receives the file and save it somewhere and doesn't have
a network connection but that seems like a scenario we don't care that much.
* resources/jquery.flot.min.js: Added.
* resources/results-template.html:
2012-08-06 Ryosuke Niwa <rniwa@webkit.org>
run-webkit-tests should have ability to add description to its JSON output
https://bugs.webkit.org/show_bug.cgi?id=93296
Reviewed by Dirk Pranke.
Parse description and show it with the WebKit revision on the results page. Also use bar graphs
instead of line graphs since we're not depicting the time series here per arv's suggestion.
Finally, add the ability to adjust y-axis between the adjusted value and 0 (plot even doesn't adjust
y-axis automatically now) by a mouse click.
* resources/results-template.html:
2012-08-04 Ryosuke Niwa <rniwa@webkit.org>
Use testRunner instead of layoutTestController in performance tests
https://bugs.webkit.org/show_bug.cgi?id=93184
Reviewed by Adam Barth.
* Animation/balls.html:
* Dromaeo/resources/dromaeorunner.js:
* inspector/console-300-lines.html:
* inspector/inspector-startup-time.html:
* inspector/network-append-30-requests.html.broken:
* inspector/show-panel.html.broken:
* resources/runner.js:
(PerfTestRunner.logInfo):
(PerfTestRunner.initAndStartLoop):
2012-08-02 Arnaud Renevier <a.renevier@sisa.samsung.com>
TypedArray set method is slow when called with another typed array
https://bugs.webkit.org/show_bug.cgi?id=92556
Reviewed by Kenneth Russell.
* Bindings/typed-array-set-from-typed.html: Added.
2012-07-28 Ryosuke Niwa <rniwa@webkit.org>
run-perf-tests should generate a results page
https://bugs.webkit.org/show_bug.cgi?id=92575
Reviewed by Eric Seidel.
Add a results page template. This page includes flot and flot.fillbetween.
jQuery and the json that contains test results are injected by run-perf-tests.
* resources/results-template.html: Added.
2012-07-27 Arnaud Renevier <a.renevier@sisa.samsung.com>
use createUninitialized when creating TypedArray from another array
https://bugs.webkit.org/show_bug.cgi?id=92518
Reviewed by Kenneth Russell.
* Bindings/typed-array-construct-from-array.html: Added.
2012-07-27 Ryosuke Niwa <rniwa@webkit.org>
Add more Russian replay performance tests
https://bugs.webkit.org/show_bug.cgi?id=92462
Reviewed by Tony Chang.
Add more Russian sites as suggested by loislo.
* Replay/Russian/lenta.ru.replay: Added.
* Replay/Russian/www.ixbt.com.replay: Added.
* Replay/Russian/www.kp.ru.replay: Added.
* Replay/Russian/www.liveinternet.ru.replay: Added.
* Replay/Russian/www.pravda.ru.replay: Added.
2012-07-26 Arnaud Renevier <a.renevier@sisa.samsung.com>
constructing TypedArray from another TypedArray is slow
https://bugs.webkit.org/show_bug.cgi?id=90838
Reviewed by Kenneth Russell.
* Bindings/typed-array-construct-from-same-type.html: Added.
* Bindings/typed-array-construct-from-typed.html: Added.
2012-07-25 Ryosuke Niwa <rniwa@webkit.org>
Import more replay performance tests from Mozilla's Tp5 test suite
https://bugs.webkit.org/show_bug.cgi?id=92229
Reviewed by Andreas Kling.
Add more replay tests based on Mozilla's Tp5 test suite [1]. Unfortunately,
we cannot import all URLs because some of them are not archived on archive.org
and others do not replay well on web-page-replay. Nonethless, we're still adding
60+ URLs in this patch.
[1] http://people.mozilla.org/~jmaher/tp5.manifest
* Replay/Chinese: Added.
* Replay/Chinese/chinaz.com.replay: Added.
* Replay/Chinese/www.163.com.replay: Added.
* Replay/Chinese/www.alipay.com.replay: Added.
* Replay/Chinese/www.baidu.com.replay: Added.
* Replay/Chinese/www.csdn.net.replay: Added.
* Replay/Chinese/www.douban.com.replay: Added.
* Replay/Chinese/www.hao123.com.replay: Added.
* Replay/Chinese/www.xinhuanet.com.replay: Added.
* Replay/Chinese/www.xunlei.com.replay: Added.
* Replay/Chinese/www.youku.com.replay: Added.
* Replay/English: Added.
* Replay/English/beatonna.livejournal.com.replay: Added.
* Replay/English/cakewrecks.blogspot.com.replay: Added.
* Replay/English/chemistry.about.com.replay: Added.
* Replay/English/digg.com.replay: Added.
* Replay/English/en.wikipedia.org-rorschach_test.replay: Added.
* Replay/English/icanhascheezburger.com.replay: Added.
* Replay/English/imgur.com-gallery.replay: Added.
* Replay/English/online.wsj.com.replay: Added.
* Replay/English/stockoverflow.com-best-comment.replay: Added.
* Replay/English/www.alibaba.com.replay: Added.
* Replay/English/www.amazon.com-kindle.replay: Added.
* Replay/English/www.apple.com.replay: Added.
* Replay/English/www.cnet.com.replay: Added.
* Replay/English/www.dailymotion.com.replay: Added.
* Replay/English/www.ehow.com-prevent-fire.replay: Added.
* Replay/English/www.filestube.com-amy-adams.replay: Added.
* Replay/English/www.foxnews.replay: Added.
* Replay/English/www.huffingtonpost.com.replay: Added.
* Replay/English/www.imdb.com-twilight.replay: Added.
* Replay/English/www.mozilla.com-all-order.replay: Added.
* Replay/English/www.php.net.replay: Added.
* Replay/English/www.reddit.com.replay: Added.
* Replay/English/www.telegraph.co.uk.replay: Added.
* Replay/English/www.w3.org-htmlcss.replay: Added.
* Replay/English/www.w3schools.com-html.replay: Added.
* Replay/English/www.youtube.com-music.replay: Added.
* Replay/French: Added.
* Replay/French/www.orange.fr.replay: Added.
* Replay/German: Added.
* Replay/Italian: Added.
* Replay/Italian/www.repubblica.it.replay: Added.
* Replay/Japanese/entameblog.seesaa.net.replay: Added.
* Replay/Japanese/www.hatena.ne.jp.replay: Added.
* Replay/Japanese/www.nicovideo.jp.replay: Added.
* Replay/Korean: Added.
* Replay/Korean/www.naver.com.replay: Added.
* Replay/Persian: Added.
* Replay/Persian/blogfa.com.replay: Added.
* Replay/Polish: Added.
* Replay/Polish/www.wp.pl.replay: Added.
* Replay/Portuguese: Added.
* Replay/Portuguese/www.uol.com.br.replay: Added.
* Replay/Russian: Added.
* Replay/Russian/vkontakte.ru-help.replay: Added.
* Replay/Russian/www.rambler.ru.replay: Added.
* Replay/Russian/www.ucoz.ru.replay: Added.
* Replay/Russian/www.yandex.ru.replay: Added.
* Replay/Spanish: Added.
* Replay/Spanish/www.taringa.net.replay: Added.
2012-07-24 Ryosuke Niwa <rniwa@webkit.org>
Add some Japanese and Swedish websites to replay tests
https://bugs.webkit.org/show_bug.cgi?id=92076
Reviewed by Andreas Kling.
Added new replay tests as follows.
* Replay/Japanese: Added.
* Replay/Japanese/2ch.net-newsplus.replay: Added.
* Replay/Japanese/ja.wikipedia.org.replay: Added.
* Replay/Japanese/www.livedoor.com.replay: Added.
* Replay/Japanese/www.rakuten.co.jp.replay: Added.
* Replay/Japanese/www.yahoo.co.jp.replay: Added.
* Replay/Swedish: Added.
* Replay/Swedish/www.flashback.se.replay: Added.
* Replay/Swedish/www.tradera.com.replay: Added.
* Replay/www.techcrunch.com.replay: Added.
2012-07-18 MORITA Hajime <morrita@google.com>
Add window resize benchmark
https://bugs.webkit.org/show_bug.cgi?id=91070
Reviewed by Ryosuke Niwa.
Added window-resize.html which exercise html5.html. This test
resizes the window and forces re-layout repeatedly.
* Interactive/resources/window-resize.js: Added.
* Interactive/window-resize.html: Added.
* Parser/resources/html5.html: Modified to inject driver scripts.
2012-07-11 Philip Rogers <pdr@google.com>
Add a performance test for hit testing in SVG
https://bugs.webkit.org/show_bug.cgi?id=90811
Reviewed by Ryosuke Niwa.
The shape rendering code is changing a lot and I'd like a performance test to
make sure we don't regress, and to track our improvements.
Performance results in my Linux desktop:
RESULT SVG: SvgHitTesting= 105.0 ms
median= 103.5 ms, stdev= 4.60434577329 ms, min= 101.0 ms, max= 116.0 ms
RESULT SVG: SvgHitTesting= 97.8 ms
median= 96.5 ms, stdev= 2.67581763205 ms, min= 95.0 ms, max= 102.0 ms
RESULT SVG: SvgHitTesting= 104.3 ms
median= 104.0 ms, stdev= 1.41774468788 ms, min= 102.0 ms, max= 107.0 ms
RESULT SVG: SvgHitTesting= 103.6 ms
median= 103.5 ms, stdev= 1.2 ms, min= 102.0 ms, max= 106.0 ms
* SVG/SvgHitTesting.html: Added.
2012-07-03 Jan Keromnes <janx@linux.com>
Web Inspector: WebInspector.TextViewer should be renamed WebInspector.TextEditor
https://bugs.webkit.org/show_bug.cgi?id=89939
Reviewed by Vsevolod Vlasov.
* inspector/first-open-scripts.html.broken:
2012-06-22 Philip Rogers <pdr@google.com>
Make SvgCubics performance test more consistent
https://bugs.webkit.org/show_bug.cgi?id=89778
Reviewed by Ryosuke Niwa.
Previously this test ran twice for each iteration, but this led to inconsistent repaints.
This change updates the test to only run once per iteration, and adds even more cubics
so that the test runs consistently in the 80ms range on my Linux desktop.
Performance results on my desktop:
RESULT SVG: SvgCubics= 80.5 ms
median= 82.0 ms, stdev= 3.04138126515 ms, min= 75.0 ms, max= 85.0 ms
RESULT SVG: SvgCubics= 80.1 ms
median= 81.0 ms, stdev= 4.27668095607 ms, min= 74.0 ms, max= 88.0 ms
RESULT SVG: SvgCubics= 81.45 ms
median= 83.0 ms, stdev= 4.01839520207 ms, min= 75.0 ms, max= 89.0 ms
RESULT SVG: SvgCubics= 78.9 ms
median= 80.0 ms, stdev= 4.75289385533 ms, min= 72.0 ms, max= 87.0 ms
* SVG/SvgCubics.html:
2012-06-22 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: partially instrument DOM Tree native memory.
https://bugs.webkit.org/show_bug.cgi?id=89568
This patch adds MemoryInstrumentation class that counts all visited
objects and calls reportMemoryUsage.
Reviewed by Yury Semikhatsky.
* inspector/native-memory-snapshot.html:
2012-06-21 Kentaro Hara <haraken@chromium.org>
Add a perf-test for innerHTML setter for a large DOM tree
https://bugs.webkit.org/show_bug.cgi?id=89723
Reviewed by Ryosuke Niwa.
We want a benchmark for innerHTML setter for the following reason:
- innerHTML setter is widely used in the real world.
- I am planning to optimize innerHTML setter in the near future.
- I want to use the innerHTML setter benchmark for the patch of bug 88834.
Performance results in my Linux desktop:
RESULT Parser: innerHTML-setter= 289.782649995 runs/s
median= 290.046269741 runs/s, stdev= 1.06575112224 runs/s, min= 286.831812256 runs/s, max= 291.005291005 runs/s
RESULT Parser: innerHTML-setter= 289.020706132 runs/s
median= 289.093298292 runs/s, stdev= 0.985203313093 runs/s, min= 286.831812256 runs/s, max= 290.620871863 runs/s
RESULT Parser: innerHTML-setter= 288.912051701 runs/s
median= 291.005291005 runs/s, stdev= 3.65241325588 runs/s, min= 283.505154639 runs/s, max= 292.553191489 runs/s
RESULT Parser: innerHTML-setter= 288.644186666 runs/s
median= 288.713910761 runs/s, stdev= 1.31889053717 runs/s, min= 286.085825748 runs/s, max= 290.620871863 runs/s
RESULT Parser: innerHTML-setter= 288.698714577 runs/s
median= 288.713910761 runs/s, stdev= 1.03938198202 runs/s, min= 286.458333333 runs/s, max= 290.237467018 runs/s
* Parser/innerHTML-setter.html: Added.
2012-06-20 Philip Rogers <pdr@google.com>
Add a performance test for paths in SVG
https://bugs.webkit.org/show_bug.cgi?id=89547
Reviewed by Ryosuke Niwa.
This change adds the first performance test for SVG paths.
In the test we modify complex cubic paths in several ways, testing:
transformations, clipping, d attribute changes, stroke properties,
text on a path, and opacity.
Sample test results on my Linux desktop:
RESULT SVG: SvgCubics= 68.85 ms
median= 69.5 ms, stdev= 4.70398767005 ms, min= 56.0 ms, max= 75.0 ms
RESULT SVG: SvgCubics= 68.4 ms
median= 69.0 ms, stdev= 3.51283361405 ms, min= 59.0 ms, max= 74.0 ms
RESULT SVG: SvgCubics= 66.95 ms
median= 67.0 ms, stdev= 3.4420197559 ms, min= 59.0 ms, max= 74.0 ms
RESULT SVG: SvgCubics= 70.2 ms
median= 71.5 ms, stdev= 3.23419232576 ms, min= 63.0 ms, max= 74.0 ms
* SVG: Added.
* SVG/SvgCubics.html: Added.
2012-06-20 Tom Zakrajsek <tomz@codeaurora.org>
Import themaninblue.com/experiment/AnimationBenchmark/ as performance tests
https://bugs.webkit.org/show_bug.cgi?id=78789
Reviewed by Ryosuke Niwa.
Added PerfTestRunner fixture around it.
* Animation/balls.html: Added.
2012-06-18 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: native memory snapshot performance and coverage test implementation.
https://bugs.webkit.org/show_bug.cgi?id=89363
We have to track the performance of MemoryAgent.getProcessMemoryDistribution.
Also this test will work as a burn down chart for Unknown memory metric.
Reviewed by Pavel Feldman.
* inspector/native-memory-snapshot.html: Added.
* inspector/performance-test.js:
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.reportSize):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._dump):
(initialize_TimeTracker.InspectorTest.runPerformanceTest):
2012-06-05 Alexei Filippov <alexeif@chromium.org>
Web Inspector: serialize edge counts instead of indexes in heap snapshot
https://bugs.webkit.org/show_bug.cgi?id=88324
The serialized node structure currently holds an index
of its first containment edge in the edges array.
The index can be quite big (up to 7 digits for large snapshots).
The patch changes the serialization format to pass
node containment edge count instead. For most nodes the count
is just a single digit number.
This reduces serialized snapshot size and therefore its transfer time.
Reviewed by Yury Semikhatsky.
* inspector/heap-snapshot-performance-test.js:
2012-06-04 Alexei Filippov <alexeif@chromium.org>
Web Inspector: speed up _calculateRetainedSizes function
https://bugs.webkit.org/show_bug.cgi?id=87863
Reviewed by Yury Semikhatsky.
* inspector/heap-snapshot-advanced.html: Added.
* inspector/heap-snapshot-performance-test.js: Copied from PerformanceTests/inspector/heap-snapshot.html.
(test.performanceTest.step0):
(test.performanceTest.step1):
(test.performanceTest.step2):
(test.performanceTest.cleanup):
(test.performanceTest.done):
(test.performanceTest):
(test):
* inspector/heap-snapshot.html:
2012-06-03 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a benchmark of querySelector() for an element that appears in the depths in the document
https://bugs.webkit.org/show_bug.cgi?id=88202
Reviewed by Ryosuke Niwa.
query-selector-first.html tests querySelector() for an element
that appears at the head of the document. query-selector-last.html
tests querySelector() for an element that appears at the tail of
the document. In addition, we want a benchmark of querySelector()
for an element that appears in the depths in the document.
Test results in my Linux desktop:
RESULT Parser: query-selector-deep= 460.776980611 runs/s
median= 460.947503201 runs/s, stdev= 1.72274941942 runs/s, min= 455.696202532 runs/s, max= 463.32046332 runs/s
RESULT Parser: query-selector-deep= 458.925050915 runs/s
median= 459.183673469 runs/s, stdev= 1.47930124139 runs/s, min= 454.545454545 runs/s, max= 460.947503201 runs/s
RESULT Parser: query-selector-deep= 461.866981491 runs/s
median= 461.538461538 runs/s, stdev= 1.14613123359 runs/s, min= 459.183673469 runs/s, max= 463.917525773 runs/s
RESULT Parser: query-selector-deep= 453.922010788 runs/s
median= 454.258855898 runs/s, stdev= 1.77279123317 runs/s, min= 447.204968944 runs/s, max= 455.696202532 runs/s
RESULT Parser: query-selector-deep= 454.666321221 runs/s
median= 454.545454545 runs/s, stdev= 1.65775667417 runs/s, min= 451.127819549 runs/s, max= 456.852791878 runs/s
* Parser/query-selector-deep.html: Added.
2012-06-03 Kentaro Hara <haraken@chromium.org>
[perf-test] Make query-selector-last.html more realistic
https://bugs.webkit.org/show_bug.cgi?id=88203
Reviewed by Ryosuke Niwa.
query-selector-last.html tests querySelector() for an element
that appears after 1000 div elements, all of which have the same
id and class. To test the performance of querySelector() under
a lot of ids and classes, we should make the ids and classes of
the 1000 elements different.
This patch degrades the performance of query-selector-last.html
by 3.6%.
[Before]
RESULT Parser: query-selector-last= 476.382274152 runs/s
median= 476.821192053 runs/s, stdev= 1.14578875814 runs/s, min= 474.308300395 runs/s, max= 478.087649402 runs/s
RESULT Parser: query-selector-last= 478.423061861 runs/s
median= 478.723404255 runs/s, stdev= 1.54876867255 runs/s, min= 473.684210526 runs/s, max= 481.347773767 runs/s
RESULT Parser: query-selector-last= 479.849287174 runs/s
median= 480.0 runs/s, stdev= 1.69849752498 runs/s, min= 475.561426684 runs/s, max= 481.927710843 runs/s
RESULT Parser: query-selector-last= 476.765438846 runs/s
median= 477.453580902 runs/s, stdev= 1.8724488664 runs/s, min= 471.821756225 runs/s, max= 478.723404255 runs/s
RESULT Parser: query-selector-last= 481.715340644 runs/s
median= 481.637742305 runs/s, stdev= 1.81446361145 runs/s, min= 475.561426684 runs/s, max= 483.675937122 runs/s
[After]
RESULT Parser: query-selector-last= 458.866623582 runs/s
median= 459.183673469 runs/s, stdev= 1.48881464737 runs/s, min= 453.972257251 runs/s, max= 460.947503201 runs/s
RESULT Parser: query-selector-last= 460.363532897 runs/s
median= 460.358056266 runs/s, stdev= 1.58512056995 runs/s, min= 456.273764259 runs/s, max= 462.130937099 runs/s
RESULT Parser: query-selector-last= 457.727448451 runs/s
median= 458.015267176 runs/s, stdev= 1.23681915516 runs/s, min= 453.972257251 runs/s, max= 459.183673469 runs/s
RESULT Parser: query-selector-last= 465.57336853 runs/s
median= 465.717981889 runs/s, stdev= 1.6616925374 runs/s, min= 460.947503201 runs/s, max= 467.532467532 runs/s
RESULT Parser: query-selector-last= 459.836252019 runs/s
median= 459.770114943 runs/s, stdev= 1.84485630505 runs/s, min= 455.696202532 runs/s, max= 462.724935733 runs/s
* Parser/query-selector-last.html:
2012-06-01 Ryosuke Niwa <rniwa@webkit.org>
Add public page loading performance tests using web-page-replay
https://bugs.webkit.org/show_bug.cgi?id=84008
Reviewed by Dirk Pranke.
Add replay tests for google.com and youtube.com as examples.
* Replay: Added.
* Replay/www.google.com.replay: Added.
* Replay/www.youtube.com.replay: Added.
2012-05-30 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a benchmark for querySelector()
https://bugs.webkit.org/show_bug.cgi?id=87742
Reviewed by Ryosuke Niwa.
Now I am optimizing querySelector() (bug 87625).
This patch adds a performance test for querySelector().
query-selector-first.html queries an element that appears
at the head of the document. On the other hand,
query-selector-last.html queries an element that appears
at the tail of the document.
Test results in my desktop:
[query-selector-first.html]
RESULT Parser: query-selector-first= 252.339803014 runs/s
median= 253.646265594 runs/s, stdev= 2.32610873209 runs/s, min= 248.138957816 runs/s, max= 254.777070064 runs/s
RESULT Parser: query-selector-first= 252.688468897 runs/s
median= 252.684876579 runs/s, stdev= 3.60008778708 runs/s, min= 246.002460025 runs/s, max= 258.397932817 runs/s
RESULT Parser: query-selector-first= 253.466019656 runs/s
median= 254.129606099 runs/s, stdev= 1.78002675664 runs/s, min= 247.831474597 runs/s, max= 254.777070064 runs/s
RESULT Parser: query-selector-first= 256.245078189 runs/s
median= 257.06940874 runs/s, stdev= 2.84722072201 runs/s, min= 249.687890137 runs/s, max= 259.74025974 runs/s
RESULT Parser: query-selector-first= 252.203100497 runs/s
median= 252.047989175 runs/s, stdev= 1.75233446036 runs/s, min= 248.138957816 runs/s, max= 255.427841635 runs/s
[query-selector-last.html]
RESULT Parser: query-selector-last= 356.009616076 runs/s
median= 355.781448539 runs/s, stdev= 0.841519086864 runs/s, min= 354.430379747 runs/s, max= 358.056265985 runs/s
RESULT Parser: query-selector-last= 360.735271001 runs/s
median= 361.057532424 runs/s, stdev= 1.12253219867 runs/s, min= 358.514724712 runs/s, max= 362.225097025 runs/s
RESULT Parser: query-selector-last= 359.598592463 runs/s
median= 359.435173299 runs/s, stdev= 0.816538258728 runs/s, min= 358.056265985 runs/s, max= 360.824742268 runs/s
RESULT Parser: query-selector-last= 357.260651715 runs/s
median= 357.598978289 runs/s, stdev= 1.17393159885 runs/s, min= 353.982300885 runs/s, max= 358.974358974 runs/s
RESULT Parser: query-selector-last= 351.696240713 runs/s
median= 351.980025916 runs/s, stdev= 1.14200564038 runs/s, min= 348.692403487 runs/s, max= 353.535353535 runs/s
* Parser/query-selector-first.html: Added.
* Parser/query-selector-last.html: Added.
2012-05-25 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: HeapSnapshot: introduce performance counter for HeapSnapshotConstructorsDataGrid._aggregatesReceived method.
https://bugs.webkit.org/show_bug.cgi?id=87393
Reviewed by Yury Semikhatsky.
* inspector/heap-snapshot.html:
2012-05-25 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: HeapProfiler's perf test: each N-th run pushes the run results N-th times.
https://bugs.webkit.org/show_bug.cgi?id=87476
The time tracking wrappers were attaching on each run.
Reviewed by Yury Semikhatsky.
* inspector/heap-snapshot.html:
2012-05-22 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: HeapProfiler: upstream retainedSize calculation.
https://bugs.webkit.org/show_bug.cgi?id=87107
This patch upstreams V8::HeapSnapshotGenerator::CalculateRetainedSizes function to front-end.
After that we will be able to drop retainedSize field from the snapshot serialized data.
See meta-bug https://bugs.webkit.org/show_bug.cgi?id=87089
Reviewed by Yury Semikhatsky.
* inspector/heap-snapshot.html: add counter for the _calculateRetainedSize method.
2012-05-21 Kent Tamura <tkent@chromium.org>
Add performance tests for <textarea>
https://bugs.webkit.org/show_bug.cgi?id=86994
Reviewed by Ryosuke Niwa.
* DOM/textarea-dom.html: Added.
* DOM/textarea-edit.html: Added.
* Parser/textarea-parsing.html: Added.
2012-05-18 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: upstream build dominators tree procedure from v8.
https://bugs.webkit.org/show_bug.cgi?id=86640
The idea is to reduce transfer size and move all the post-processing steps to the front-end.
The JS implementation is ~1.5 times slower.
Reviewed by Yury Semikhatsky.
Covered by existing tests and performance tests.
* inspector/heap-snapshot.html:
2012-05-18 Kentaro Hara <haraken@chromium.org>
[perf-test] Remove Bindings/dom-attributes.html
https://bugs.webkit.org/show_bug.cgi?id=86820
Reviewed by Ryosuke Niwa.
Bindings/dom-attributes.html is just a collection of random
DOM attributes and methods. Now we've added more reasonable
micro benchmarks by classifying DOM binding call paths, we
can remove Bindings/dom-attributes.html.
* Bindings/dom-attributes.html: Removed.
2012-05-18 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a binding benchmark for getElementById() for an undefined id
https://bugs.webkit.org/show_bug.cgi?id=86812
Reviewed by Ryosuke Niwa.
We should remove Bindings/dom-attributes.html and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
This patch adds a benchmark for document.getElementById() for an undefined id.
This benchmark covers 'getElementById (not in document)' in Dromaeo/dom-query.html,
and other Node-query methods that return a null.'
(Note: This benchmark is slower than document.getElementById() for a defined id.
We will fix the performance issue soon.)
Test results in my Linux desktop:
RESULT Bindings: undefined-get-element-by-id= 271.945751345 runs/s
median= 273.122389532 runs/s, stdev= 6.78219237299 runs/s, min= 257.4002574 runs/s, max= 281.690140845 runs/s
RESULT Bindings: undefined-get-element-by-id= 269.105872408 runs/s
median= 268.948655257 runs/s, stdev= 5.73707323755 runs/s, min= 257.4002574 runs/s, max= 278.128950695 runs/s
RESULT Bindings: undefined-get-element-by-id= 269.987513372 runs/s
median= 272.952853598 runs/s, stdev= 5.30252336078 runs/s, min= 255.754475703 runs/s, max= 273.97260274 runs/s
RESULT Bindings: undefined-get-element-by-id= 270.169625901 runs/s
median= 271.604938272 runs/s, stdev= 5.29502391906 runs/s, min= 258.064516129 runs/s, max= 278.481012658 runs/s
RESULT Bindings: undefined-get-element-by-id= 269.054631422 runs/s
median= 267.966292802 runs/s, stdev= 6.27197240579 runs/s, min= 258.064516129 runs/s, max= 278.481012658 runs/s
* Bindings/undefined-get-element-by-id.html: Added.
2012-05-18 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a binding benchmark for getElementsByTagName()
https://bugs.webkit.org/show_bug.cgi?id=86810
Reviewed by Ryosuke Niwa.
We should remove Bindings/dom-attributes.html and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
This patch adds a benchmark for document.getElementsByTagName().
This benchmark covers 'getElementsByTagName (not in document)',
'getElementsByTagName', 'getElementsByName (not in document)'
and 'getElementsByName' in Dromaeo/dom-query.html, and other DOM
methods that return a NodeList.
Test results in my Linux desktop:
RESULT Bindings: get-elements-by-tag-name= 364.542328875 runs/s
median= 366.972477064 runs/s, stdev= 5.25387955333 runs/s, min= 351.317440402 runs/s, max= 368.421052632 runs/s
RESULT Bindings: get-elements-by-tag-name= 364.341569369 runs/s
median= 366.492146597 runs/s, stdev= 4.867374197 runs/s, min= 352.644836272 runs/s, max= 367.936925099 runs/s
RESULT Bindings: get-elements-by-tag-name= 363.924242967 runs/s
median= 366.013071895 runs/s, stdev= 5.16768212289 runs/s, min= 351.317440402 runs/s, max= 367.936925099 runs/s
RESULT Bindings: get-elements-by-tag-name= 365.332594438 runs/s
median= 367.454068241 runs/s, stdev= 6.17046918572 runs/s, min= 350.0 runs/s, max= 370.37037037 runs/s
RESULT Bindings: get-elements-by-tag-name= 363.999514324 runs/s
median= 366.492146597 runs/s, stdev= 5.31235674905 runs/s, min= 350.877192982 runs/s, max= 368.421052632 runs/s
* Bindings/get-elements-by-tag-name.html: Added.
2012-05-18 Kentaro Hara <haraken@chromium.org>
[perf-test] Add 7 micro benchmarks for DOM bindings
https://bugs.webkit.org/show_bug.cgi?id=86816
Reviewed by Ryosuke Niwa.
We should remove Bindings/dom-attributes.html and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
This patch adds seven micro benchmarks for DOM bindings.
id-getter.html covers 'element.property' in Dromaeo/dom-attr.html,
'innerHTML' in Dromaeo/dom-modify.html, and other DOM attributes that
return a String.
id-setter.html covers 'element.property = value' in Dromaeo/dom-attr.html,
and other DOM attributes that sets a String.
undefined-id-getter.html covers undefined DOM attributes that return an empty String.
append-child.html covers 'appendChild' and 'removeChild' in Dromaeo/dom-modify.html.
insert-before.html covers 'insertBefore' in Dromaeo/dom-modify.html and replaceChild().
create-element.html covers 'createElement', 'createTextNode' and 'cloneNode'
in Dromaeo/dom-modify.html, and other DOM methods that return a new Node object.
node-list-access.html covers 'childNodes' in Dromaeo/dom-traverse.html,
and other DOM attributes that access NodeList.
Test results in my Linux desktop:
[id-getter]
RESULT Bindings: id-getter= 550.517821097 runs/s
median= 550.688360451 runs/s, stdev= 0.970723739106 runs/s, min= 548.628428928 runs/s, max= 552.070263488 runs/s
RESULT Bindings: id-getter= 550.655839847 runs/s
median= 550.688360451 runs/s, stdev= 1.03312821884 runs/s, min= 549.313358302 runs/s, max= 552.070263488 runs/s
RESULT Bindings: id-getter= 550.277753355 runs/s
median= 550.344180225 runs/s, stdev= 1.19960683464 runs/s, min= 547.945205479 runs/s, max= 552.070263488 runs/s
RESULT Bindings: id-getter= 550.072271009 runs/s
median= 550.344180225 runs/s, stdev= 1.38925152131 runs/s, min= 547.263681592 runs/s, max= 552.070263488 runs/s
RESULT Bindings: id-getter= 548.802050235 runs/s
median= 548.628428928 runs/s, stdev= 1.18244513683 runs/s, min= 545.905707196 runs/s, max= 550.688360451 runs/s
[id-setter]
RESULT Bindings: id-setter= 211.370591663 runs/s
median= 210.803689065 runs/s, stdev= 1.4555795889 runs/s, min= 209.973753281 runs/s, max= 214.285714286 runs/s
RESULT Bindings: id-setter= 215.439081352 runs/s
median= 214.797136038 runs/s, stdev= 1.50920388121 runs/s, min= 213.049267643 runs/s, max= 218.446601942 runs/s
RESULT Bindings: id-setter= 216.721698466 runs/s
median= 215.956886352 runs/s, stdev= 1.54090749644 runs/s, min= 214.285714286 runs/s, max= 219.78021978 runs/s
RESULT Bindings: id-setter= 216.343019087 runs/s
median= 215.827338129 runs/s, stdev= 1.46619894553 runs/s, min= 215.053763441 runs/s, max= 218.97810219 runs/s
RESULT Bindings: id-setter= 216.799288017 runs/s
median= 215.956886352 runs/s, stdev= 1.49100776978 runs/s, min= 215.311004785 runs/s, max= 219.78021978 runs/s
[undefined-id-getter]
RESULT Bindings: undefined-id-getter= 494.104255241 runs/s
median= 494.132368875 runs/s, stdev= 1.13092821109 runs/s, min= 490.797546012 runs/s, max= 495.662949195 runs/s
RESULT Bindings: undefined-id-getter= 493.921802916 runs/s
median= 493.827160494 runs/s, stdev= 1.25097443119 runs/s, min= 490.196078431 runs/s, max= 495.662949195 runs/s
RESULT Bindings: undefined-id-getter= 491.976485667 runs/s
median= 492.004920049 runs/s, stdev= 0.947090576896 runs/s, min= 490.196078431 runs/s, max= 493.827160494 runs/s
RESULT Bindings: undefined-id-getter= 491.987710185 runs/s
median= 494.132368875 runs/s, stdev= 8.66602543327 runs/s, min= 454.545454545 runs/s, max= 495.662949195 runs/s
RESULT Bindings: undefined-id-getter= 494.195515847 runs/s
median= 494.437577256 runs/s, stdev= 1.06135681702 runs/s, min= 490.797546012 runs/s, max= 495.662949195 runs/s
[append-child]
RESULT Bindings: append-child= 260.628237026 runs/s
median= 260.926399352 runs/s, stdev= 2.55231060598 runs/s, min= 256.739409499 runs/s, max= 265.604249668 runs/s
RESULT Bindings: append-child= 280.796193436 runs/s
median= 280.791435348 runs/s, stdev= 2.53961321867 runs/s, min= 277.427490542 runs/s, max= 286.085825748 runs/s
RESULT Bindings: append-child= 279.856209714 runs/s
median= 280.25477707 runs/s, stdev= 2.85447647301 runs/s, min= 275.344180225 runs/s, max= 284.237726098 runs/s
RESULT Bindings: append-child= 280.834502714 runs/s
median= 280.25477707 runs/s, stdev= 2.67738046429 runs/s, min= 277.427490542 runs/s, max= 287.206266319 runs/s
RESULT Bindings: append-child= 274.723872106 runs/s
median= 273.291925466 runs/s, stdev= 3.03671746706 runs/s, min= 272.614622057 runs/s, max= 282.413350449 runs/s
[insert-before]
RESULT Bindings: insert-before= 180.986913006 runs/s
median= 180.878552972 runs/s, stdev= 0.758038687299 runs/s, min= 180.18018018 runs/s, max= 183.968462549 runs/s
RESULT Bindings: insert-before= 186.339916144 runs/s
median= 186.170212766 runs/s, stdev= 0.869022097127 runs/s, min= 185.676392573 runs/s, max= 189.798339265 runs/s
RESULT Bindings: insert-before= 189.45344838 runs/s
median= 189.349112426 runs/s, stdev= 0.811854866567 runs/s, min= 187.79342723 runs/s, max= 192.539109507 runs/s
RESULT Bindings: insert-before= 189.363295991 runs/s
median= 189.349112426 runs/s, stdev= 0.75387713097 runs/s, min= 188.014101058 runs/s, max= 192.076830732 runs/s
RESULT Bindings: insert-before= 189.252041642 runs/s
median= 189.349112426 runs/s, stdev= 0.840447225363 runs/s, min= 187.573270809 runs/s, max= 192.076830732 runs/s
[create-element]
RESULT Bindings: create-element= 280.675830077 runs/s
median= 280.701824914 runs/s, stdev= 0.788606343054 runs/s, min= 279.441117764 runs/s, max= 282.542885974 runs/s
RESULT Bindings: create-element= 276.427631436 runs/s
median= 277.227722772 runs/s, stdev= 3.39874667549 runs/s, min= 262.417994377 runs/s, max= 279.162512463 runs/s
RESULT Bindings: create-element= 277.156894411 runs/s
median= 277.227722772 runs/s, stdev= 1.13255119226 runs/s, min= 274.914089347 runs/s, max= 278.884462151 runs/s
RESULT Bindings: create-element= 278.066825356 runs/s
median= 278.191822254 runs/s, stdev= 0.686497782792 runs/s, min= 276.953511375 runs/s, max= 279.162512463 runs/s
RESULT Bindings: create-element= 276.431538109 runs/s
median= 276.406712734 runs/s, stdev= 0.759593662298 runs/s, min= 275.229357798 runs/s, max= 278.053624628 runs/s
[node-list-access]
RESULT Bindings: node-list-access= 222.747504073 runs/s
median= 222.772277228 runs/s, stdev= 0.789027527555 runs/s, min= 221.674876847 runs/s, max= 224.159402242 runs/s
RESULT Bindings: node-list-access= 220.722448287 runs/s
median= 221.266217576 runs/s, stdev= 1.65463497875 runs/s, min= 217.391304348 runs/s, max= 222.222222222 runs/s
RESULT Bindings: node-list-access= 222.195870443 runs/s
median= 222.222222222 runs/s, stdev= 0.489709262091 runs/s, min= 221.13022113 runs/s, max= 223.048327138 runs/s
RESULT Bindings: node-list-access= 221.431121677 runs/s
median= 221.538545435 runs/s, stdev= 0.608292116087 runs/s, min= 220.048899756 runs/s, max= 222.772277228 runs/s
RESULT Bindings: node-list-access= 219.001367135 runs/s
median= 221.538545435 runs/s, stdev= 4.65773933007 runs/s, min= 209.973753281 runs/s, max= 222.496909765 runs/s
* Bindings/append-child.html: Added.
* Bindings/create-element.html: Added.
* Bindings/id-getter.html: Added.
* Bindings/id-setter.html: Added.
* Bindings/insert-before.html: Added.
* Bindings/node-list-access.html: Added.
* Bindings/undefined-id-getter.html: Added.
2012-05-18 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a binding benchmark for div.setAttribute()
https://bugs.webkit.org/show_bug.cgi?id=86815
Reviewed by Ryosuke Niwa.
We should remove Bindings/dom-attributes.html and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
This patch adds a benchmark for div.setAttribute(). This benchmark
covers 'setAttribute' in Dromaeo/dom-attr.html and other DOM methods
that return an undefined.
Test results in my Linux desktop:
RESULT Bindings: set-attribute= 793.745073252 runs/s
median= 791.589665765 runs/s, stdev= 6.00467159709 runs/s, min= 785.27607362 runs/s, max= 808.080808081 runs/s
RESULT Bindings: set-attribute= 790.858444164 runs/s
median= 787.918921436 runs/s, stdev= 7.86264953655 runs/s, min= 780.234070221 runs/s, max= 806.04534005 runs/s
RESULT Bindings: set-attribute= 787.277571417 runs/s
median= 784.31372549 runs/s, stdev= 7.45363346657 runs/s, min= 778.588807786 runs/s, max= 804.020100503 runs/s
RESULT Bindings: set-attribute= 782.401393791 runs/s
median= 779.062978802 runs/s, stdev= 6.48250081621 runs/s, min= 777.642770352 runs/s, max= 796.019900498 runs/s
RESULT Bindings: set-attribute= 791.792516608 runs/s
median= 791.556728232 runs/s, stdev= 6.49182980397 runs/s, min= 779.220779221 runs/s, max= 808.080808081 runs/s
* Bindings/set-attribute.html: Added.
2012-05-17 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a binding benchmark for div.getAttribute()
https://bugs.webkit.org/show_bug.cgi?id=86814
Reviewed by Ryosuke Niwa.
We should remove Bindings/dom-attributes.html and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
This patch adds a benchmark for div.getAttribute(). This benchmark
covers 'getAttribute' in Dromaeo/dom-attr.html, and other DOM methods
that return a String.
Test results in my Linux desktop:
RESULT Bindings: get-attribute= 250.088158538 runs/s
median= 250.469728765 runs/s, stdev= 4.66551901315 runs/s, min= 240.673886883 runs/s, max= 256.739409499 runs/s
RESULT Bindings: get-attribute= 250.209764698 runs/s
median= 250.626959986 runs/s, stdev= 4.12030002477 runs/s, min= 241.254523522 runs/s, max= 255.102040816 runs/s
RESULT Bindings: get-attribute= 248.907532887 runs/s
median= 250.312891114 runs/s, stdev= 3.23173125874 runs/s, min= 240.673886883 runs/s, max= 251.572327044 runs/s
RESULT Bindings: get-attribute= 250.243680844 runs/s
median= 250.783797637 runs/s, stdev= 4.19327170024 runs/s, min= 240.963855422 runs/s, max= 255.102040816 runs/s
RESULT Bindings: get-attribute= 245.329046608 runs/s
median= 244.948040416 runs/s, stdev= 2.24314248534 runs/s, min= 240.384615385 runs/s, max= 248.756218905 runs/s
* Bindings/get-attribute.html: Added.
2012-05-17 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a binding benchmark for getElementById()
https://bugs.webkit.org/show_bug.cgi?id=86808
Reviewed by Ryosuke Niwa.
Currently Bindings/dom-attributes.html is just a collection
of random DOM attributes and methods. We should remove it and
instead add more reasonable micro benchmarks by classifying
DOM binding call paths.
This patch adds a benchmark for document.getElementById(),
which covers other DOM methods that return a Node Object.
The reason why we want to add a benchmark for document.getElementById()
in spite of the fact that Dromaeo/dom-query.html is already testing
document.getElementById(), is that Dromaeo/dom-query.html outputs one
result for several benchmarks (i.e. getElementById().nodeType,
getElementsByTagName()[0].nodeType etc), and thus we cannot observe
regression of getElementById() itself. (Catching regression of
getElementById() would be critical.)
Test results in my Linux desktop:
RESULT Bindings: get-element-by-id= 300.933707795 runs/s
median= 302.267002519 runs/s, stdev= 3.04954648504 runs/s, min= 295.930949445 runs/s, max= 305.34351145 runs/s
RESULT Bindings: get-element-by-id= 302.030324483 runs/s
median= 302.267481977 runs/s, stdev= 1.78518068367 runs/s, min= 298.507462687 runs/s, max= 304.568527919 runs/s
RESULT Bindings: get-element-by-id= 301.993483538 runs/s
median= 302.648171501 runs/s, stdev= 1.87604126626 runs/s, min= 296.662546354 runs/s, max= 304.568527919 runs/s
RESULT Bindings: get-element-by-id= 301.936607982 runs/s
median= 302.45758701 runs/s, stdev= 1.88991087072 runs/s, min= 298.879202989 runs/s, max= 304.955527319 runs/s
RESULT Bindings: get-element-by-id= 301.952234563 runs/s
median= 302.648171501 runs/s, stdev= 1.59929752614 runs/s, min= 299.625468165 runs/s, max= 304.568527919 runs/s
* Bindings/get-element-by-id.html: Added.
2012-05-17 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a benchmark for body.scrollTop
https://bugs.webkit.org/show_bug.cgi?id=86806
Reviewed by Ryosuke Niwa.
Currently Bindings/dom-attributes.html is just a collection of random
DOM attributes and methods. We should remove it and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
This patch adds a benchmark for body.scrollTop, which covers other
DOM attributes that return small integers.
(Note: Performance optimization for the benchmark will be coming soon.)
Test results in my Linux desktop:
RESULT Bindings: scroll-top= 209.410654239 runs/s
median= 211.64021164 runs/s, stdev= 4.09958741195 runs/s, min= 201.005025126 runs/s, max= 212.483399734 runs/s
RESULT Bindings: scroll-top= 195.651111157 runs/s
median= 196.319018405 runs/s, stdev= 1.77011627406 runs/s, min= 191.846522782 runs/s, max= 197.28729963 runs/s
RESULT Bindings: scroll-top= 200.004907612 runs/s
median= 201.511335013 runs/s, stdev= 3.27455403827 runs/s, min= 193.236714976 runs/s, max= 202.53164557 runs/s
RESULT Bindings: scroll-top= 209.582737512 runs/s
median= 210.803689065 runs/s, stdev= 3.16769655464 runs/s, min= 203.045685279 runs/s, max= 211.920529801 runs/s
RESULT Bindings: scroll-top= 199.924607687 runs/s
median= 201.13144338 runs/s, stdev= 3.11080503619 runs/s, min= 193.003618818 runs/s, max= 202.02020202 runs/s
* Bindings/scroll-top.html: Added.
2012-05-17 Kentaro Hara <haraken@chromium.org>
[perf-test] Add a micro benchmark for div.firstChild getter for an undefined firstChild
https://bugs.webkit.org/show_bug.cgi?id=86725
Reviewed by Ryosuke Niwa.
We are going to remove Bindings/dom-attributes.html and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
In this bug, we add a micro benchmark for div.firstChild getter for an
undefined firstChild. This benchmark covers other undefined DOM attributes
that return a null.
(Note: In V8, div.firstChild for an undefined firstChild is currently slower
than div.firstChild for a defined firstChild.)
Test results in my Linux desktop:
RESULT Bindings: undefined-first-child= 541.408311042 runs/s
median= 541.205412054 runs/s, stdev= 1.29841219187 runs/s, min= 537.897310513 runs/s, max= 543.209876543 runs/s
RESULT Bindings: undefined-first-child= 541.00750695 runs/s
median= 540.540540541 runs/s, stdev= 0.967521230965 runs/s, min= 539.215686275 runs/s, max= 543.209876543 runs/s
RESULT Bindings: undefined-first-child= 523.630714897 runs/s
median= 523.560209424 runs/s, stdev= 1.01570919645 runs/s, min= 522.193211488 runs/s, max= 525.624178712 runs/s
RESULT Bindings: undefined-first-child= 553.077663588 runs/s
median= 553.459119497 runs/s, stdev= 0.805697397863 runs/s, min= 551.378446115 runs/s, max= 554.156171285 runs/s
RESULT Bindings: undefined-first-child= 541.5401432 runs/s
median= 541.538666618 runs/s, stdev= 0.954301364767 runs/s, min= 539.877300613 runs/s, max= 543.209876543 runs/s
* Bindings/undefined-first-child.html: Added.
2012-05-17 Kentaro Hara <haraken@chromium.org>
[Performance test] Add a micro benchmark for div.firstChild getter
https://bugs.webkit.org/show_bug.cgi?id=86582
Reviewed by Ryosuke Niwa.
We are going to remove Bindings/dom-attributes.html and instead add more
reasonable micro benchmarks by classifying DOM binding call paths.
In this bug, we add a micro benchmark for div.firstChild getter.
This benchmark covers 'firstChild', 'lastChild', 'nextSibling' and
'previousSibling' in Dromaeo/dom-traverse.html, and other DOM attributes
that return a Node object.
Multiple test results in my Linux desktop:
RESULT Bindings: first-child= 798.157160346 runs/s
median= 798.004987531 runs/s, stdev= 1.52006063407 runs/s, min= 796.019900498 runs/s, max= 801.001251564 runs/s
RESULT Bindings: first-child= 797.603608554 runs/s
median= 797.872340426 runs/s, stdev= 2.2522621261 runs/s, min= 791.556728232 runs/s, max= 801.001251564 runs/s
RESULT Bindings: first-child= 798.656295468 runs/s
median= 798.004987531 runs/s, stdev= 1.79367478063 runs/s, min= 797.01120797 runs/s, max= 803.011292346 runs/s
RESULT Bindings: first-child= 797.812784267 runs/s
median= 798.004987531 runs/s, stdev= 2.31766523191 runs/s, min= 791.100123609 runs/s, max= 802.005012531 runs/s
RESULT Bindings: first-child= 797.963311597 runs/s
median= 798.004987531 runs/s, stdev= 2.53014907337 runs/s, min= 789.14919852 runs/s, max= 801.001251564 runs/s
* Bindings/first-child.html: Added.
2012-05-16 Kentaro Hara <haraken@chromium.org>
[Performance test] Support "description" for PerfTestRunner.run and PerfTestRunner.runPerSecond
https://bugs.webkit.org/show_bug.cgi?id=86696
Reviewed by Ryosuke Niwa.
We want to add some description for each PerfTestRunner.run and
PerfTestRunner.runPerSecond, so that people can know what each
run is testing.
Output example:
$ ./Tools/Scripts/run-perf-tests Bindings/first-child.html
Running Bindings/first-child.html (1 of 1)
DESCRIPTION: Benchmark for DOM attributes that return a Node object.
RESULT Bindings: first-child= 788.359076534 runs/s
median= 797.508097751 runs/s, stdev= 19.0972905207 runs/s, min= 746.666666667 runs/s, max= 801.001251564 runs/s
* resources/runner.js:
(PerfTestRunner.logStatistics):
(PerfTestRunner.printStatistics):
(PerfTestRunner.runPerSecond):
2012-05-16 Yury Semikhatsky <yurys@chromium.org>
Unreviewed. Fix heap profiler performance test after r117234.
* inspector/heap-snapshot.html:
2012-05-14 Ryosuke Niwa <rniwa@webkit.org>
Convert CSS and Parser tests to runs/s tests
https://bugs.webkit.org/show_bug.cgi?id=86399
Reviewed by Ojan Vafai.
Use runPerSecond instead of run to measure results in function calls per second (run/s) instead of time (ms).
This allows us to continue measuring performance reliably even when WebKit's performance improves and results
become too small for Date.now()'s precision (around 15 ms).
It should also reduce perf. bots cycle time for slower tests because we limit the number of function calls by time.
* CSS/CSSPropertySetterGetter.html:
* CSS/CSSPropertyUpdateValue.html:
* Parser/css-parser-yui.html:
* Parser/simple-url.html:
* Parser/tiny-innerHTML.html:
* Parser/url-parser.html:
* Parser/xml-parser.html:
2012-05-14 Dan Bernstein <mitz@apple.com>
Add a line layout performance test
https://bugs.webkit.org/show_bug.cgi?id=86216
Reviewed by Ryosuke Niwa.
* Layout/line-layout.html: Added.
2012-05-14 Tony Chang <tony@chromium.org>
Don't append log lines while perf tests are running.
https://bugs.webkit.org/show_bug.cgi?id=86028
Reviewed by Ryosuke Niwa.
In some tests, the extra DOM nodes can cause the test timing to change.
Avoid adding DOM nodes until the test is over. When running in a browser,
we append nodes as we run so the user can have some feedback.
* resources/runner.js:
(PerfTestRunner.log): Store the log lines in an array until the test is finished.
2012-05-14 Ryosuke Niwa <rniwa@webkit.org>
Build fix. Don't adjust calls per iteration in the second run.
* resources/runner.js:
(PerfTestRunner._perSecondRunner):
2012-05-13 Ryosuke Niwa <rniwa@webkit.org>
performance tests should be able to measure runs/sec rather than time
https://bugs.webkit.org/show_bug.cgi?id=86021
Reviewed by Ojan Vafai.
Add PerfTestRunner.runPerSecond. It uses _runLoop but replaces _runner by _perSecondRunner
to compute runs/s of runFunction.
When _perSecondRunner is called for the first time, i.e. _completedRuns is 0 (notice this is -1
in regular run/_runner), it slowly increases the number of function calls to runFunction between
time measurements in order to discount the time used by new Date() calls themselves until the
total time spent reaches 100 milliseconds.
By default, runPerSecond runs the test for at least 750 milliseconds in each run, and executes
21 runs, yielding the total run time of roughly 18 seconds. This is significantly faster than
most of existing performance tests. Also see http://ejohn.org/blog/accuracy-of-javascript-time/.
Finally, refactored the existing methods of PerfTestRunner to allow "runs/s" unit and share code.
* Layout/flexbox-column-nowrap.html:
* Layout/flexbox-column-wrap.html:
* Layout/flexbox-row-nowrap.html:
* Layout/flexbox-row-wrap.html:
* resources/runner.js:
(PerfTestRunner.computeStatistics): Takes unit.
(PerfTestRunner.logStatistics): Ditto.
(PerfTestRunner._runLoop):
(PerfTestRunner._runner):
(PerfTestRunner.runPerSecond): Added.
(PerfTestRunner._perSecondRunner): Added. Called by _runLoop.
(PerfTestRunner._perSecondRunnerIterator): Added.
2012-05-09 Tony Chang <tony@chromium.org>
add some basic perf-o-matic tests for flexbox
https://bugs.webkit.org/show_bug.cgi?id=86017
Reviewed by Ryosuke Niwa.
Each of these tests take < 3s on my machine.
* Layout/flexbox-column-nowrap.html: Added.
* Layout/flexbox-column-wrap.html: Added.
* Layout/flexbox-row-nowrap.html: Added.
* Layout/flexbox-row-wrap.html: Added.
2012-05-05 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: unreviewed followup fix for the performance test after r116218.
* inspector/heap-snapshot.html:
2012-05-02 Tom Zakrajsek <tomz@codeaurora.org>
Need tests for PerfTestRunner.computeStatistics
https://bugs.webkit.org/show_bug.cgi?id=85410
Reviewed by Ryosuke Niwa.
* resources/runner.js:
2012-05-02 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r115905.
http://trac.webkit.org/changeset/115905
https://bugs.webkit.org/show_bug.cgi?id=85435
New computeStatistics test is failing on chromium ports
(Requested by tomz on #webkit).
* resources/runner.js:
2012-05-02 Tom Zakrajsek <tomz@codeaurora.org>
Need tests for PerfTestRunner.computeStatistics
https://bugs.webkit.org/show_bug.cgi?id=85410
Reviewed by Ryosuke Niwa.
* resources/runner.js:
2012-04-29 Tom Zakrajsek <tomz@codeaurora.org>
PerfTestRunner.computeStatistics incorrectly calculates min, max and median
https://bugs.webkit.org/show_bug.cgi?id=85111
Reviewed by Ryosuke Niwa.
The sort of the data input was being done alphabetically.
So I provided a numeric compare function.
* resources/runner.js:
2012-04-17 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: the fix for test after massive rename in r114271.
https://bugs.webkit.org/show_bug.cgi?id=84147
Drive by fix. The test was renamed to heap-snapshot.html
Reviewed by Yury Semikhatsky.
* inspector/heap-snapshot.html: Renamed from PerformanceTests/inspector/detailed-heapshots-smoke-test.html.
2012-04-16 Yury Semikhatsky <yurys@chromium.org>
Web Inspector: rename heap profiler files and classes DetailedHeapshot* ->HeapSnapshot*
https://bugs.webkit.org/show_bug.cgi?id=84038
A bunch of renames "detailed heapshot" -> "heap snapshot".
Reviewed by Pavel Feldman.
* inspector/detailed-heapshots-smoke-test.html:
2012-04-13 Ryosuke Niwa <rniwa@webkit.org>
Fix skipped list.
* Skipped:
2012-04-12 Ryosuke Niwa <rniwa@webkit.org>
Enable SVG page loading performance tests
https://bugs.webkit.org/show_bug.cgi?id=83861
Reviewed by Adam Barth.
Unskip PageLoad directory and skip tests that load too fast (less than 100ms) and are unstable,
and the ones that take too long to load (more than 20s).
* Skipped:
2012-04-04 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: Unreviewed. temporary disable broken inspector tests.
* inspector/first-open-scripts.html.broken: Renamed from PerformanceTests/inspector/first-open-scripts.html.
* inspector/network-append-30-requests.html.broken: Renamed from PerformanceTests/inspector/network-append-30-requests.html.
* inspector/show-panel.html.broken: Renamed from PerformanceTests/inspector/show-panel.html.
2012-04-04 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: linearise aggregate's retaining size calculation.
https://bugs.webkit.org/show_bug.cgi?id=83125
This version is twice as fast as the original and it is non-recursive.
Reviewed by Yury Semikhatsky.
* inspector/detailed-heapshots-smoke-test.html:
2012-03-30 David Barr <davidbarr@chromium.org>
Split up top-level .gitignore and .gitattributes
https://bugs.webkit.org/show_bug.cgi?id=82687
Reviewed by Tor Arne Vestbø.
* .gitattributes: Added.
2012-03-28 Yury Semikhatsky <yurys@chromium.org>
Web Inspector: switch heap profiler front-end to separate storage of nodes and edges
https://bugs.webkit.org/show_bug.cgi?id=82453
Updated heap profiler performance test after heap profiler front-end
changes.
Reviewed by Pavel Feldman.
* inspector/detailed-heapshots-smoke-test.html:
2012-03-27 Alexis Menard <alexis.menard@openbossa.org>
Add a perf test which updates the value of an already declared CSS property.
https://bugs.webkit.org/show_bug.cgi?id=82321
Reviewed by Andreas Kling.
This benchmark update CSS existing properties of the style from JS.
* CSS/CSSPropertyUpdateValue.html: Added.
2012-03-15 Kentaro Hara <haraken@chromium.org>
[PerformanceTests] run-perf-tests should output correct units
https://bugs.webkit.org/show_bug.cgi?id=78303
Reviewed by Ryosuke Niwa.
Previously run-perf-tests just supported "ms" for units.
Consequently, Dromaeo perf tests had been reporting runs/s as "ms".
This patch fixes run-perf-tests so that they can support custom units.
The default unit is "ms".
The test result looks like this:
$ ./Tools/Scripts/run-perf-tests Dromaeo/dom-attr.html
RESULT Dromaeo: dom-attr= 6465.9525483 runs/s
median= 0.0 runs/s, stdev= 24.2983433436 runs/s, min= 6435.87649402 runs/s, max= 6515.63693392 runs/s
* Dromaeo/resources/dromaeorunner.js:
(.):
* resources/runner.js:
(PerfTestRunner.computeStatistics):
(PerfTestRunner.printStatistics):
2012-03-15 Alexis Menard <alexis.menard@openbossa.org>
Fix the test failing with run-perf-tests.
Rubber stamped by Ryosuke Niwa.
* CSS/CSSPropertySetterGetter.html:
2012-03-14 Alexis Menard <alexis.menard@openbossa.org>
Add a new perf test to benchmark setting and reading CSS properties from JS.
https://bugs.webkit.org/show_bug.cgi?id=81155
Reviewed by Ryosuke Niwa.
This benchmark read and set CSS properties from JS. It contains a list
of common CSS properties.
* CSS/CSSPropertySetterGetter.html: Added.
2012-03-14 Alexandru Chiculita <achicu@adobe.com>
Layout/floats.html should be runnable by run-perf-tests
https://bugs.webkit.org/show_bug.cgi?id=77051
Reviewed by Ryosuke Niwa.
I've split Layout/floats.html into multiple tests for each button in the original manual test.
Some tests take longer to run and I've changed the number of iterations, so that each tests finishes under 30s per run.
* DOM/resources/dom-perf.js:
* Layout/floats.html: Removed.
* Layout/floats_100_100.html: Added.
* Layout/floats_100_100_nested.html: Added.
* Layout/floats_20_100.html: Added.
* Layout/floats_20_100_nested.html: Added.
* Layout/floats_2_100.html: Added.
* Layout/floats_2_100_nested.html: Added.
* Layout/floats_50_100.html: Added.
* Layout/floats_50_100_nested.html: Added.
* Layout/resources/floats.css: Added.
(.container):
(.float):
(.big):
(.float-end):
* Layout/resources/floats.js: Added.
(.):
* Skipped:
* resources/runner.js:
(PerfTestRunner.resetRandomSeed):
(PerfTestRunner.random):
(Math.random):
Moved the Math.random to runner.js to be used by all tests.
Added resetRandomSeed to bring the randomizer back to initial seed.
It is useful to get the same results at every run and minimize the
differences between runs.
2012-03-14 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r110559.
http://trac.webkit.org/changeset/110559
https://bugs.webkit.org/show_bug.cgi?id=81142
Broke Dromaeo tests (Requested by rniwa on #webkit).
* Dromaeo/resources/dromaeorunner.js:
(.):
2012-03-13 Kentaro Hara <haraken@chromium.org>
Dromaeo perf-tests results are wrong
https://bugs.webkit.org/show_bug.cgi?id=80974
Reviewed by Hajime Morita.
Dromaeo perf-tests had reported the sum of runs/seconds as "ms".
This patch fixes them to report the execution time per run.
At present, they report "0.0ms" for "stdev". This is because
dromaeorunner.js can just know stdev of "runs/seconds"
and cannot calculate stdev of "ms" from that. We can fix it later.
* Dromaeo/resources/dromaeorunner.js:
(.):
2012-03-12 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: chromium: increase heap snapshot performance coverage.
https://bugs.webkit.org/show_bug.cgi?id=80829
Reviewed by Yury Semikhatsky.
* inspector/detailed-heapshots-smoke-test.html:
* inspector/performance-test.js:
(initialize_TimeTracker.InspectorTest.measureFunction):
2012-03-06 Kentaro Hara <haraken@chromium.org>
[Perf tests] Reduce the number of loops in dom-attributes.html
https://bugs.webkit.org/show_bug.cgi?id=80077
Reviewed by Ryosuke Niwa.
dom-attributes.html takes 100~ seconds in the perf bots. This patch reduces
the time by reducing the number of loops.
This is just a temporary fix. After more detailed investigation, I will reduce
the number of tests in dom-attributes.html, and revert back the number of loops
to guarantee the reliability of the perf test results.
* Bindings/dom-attributes.html:
2012-03-06 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: Heap Snapshot test: split overal time metric into separate metrics.
https://bugs.webkit.org/show_bug.cgi?id=80409
Reviewed by Yury Semikhatsky.
* inspector/detailed-heapshots-smoke-test.html:
2012-03-05 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: [chromium] introduce HeapSnapshot performance test.
https://bugs.webkit.org/show_bug.cgi?id=80280
Reviewed by Pavel Feldman.
* inspector/detailed-heapshots-smoke-test.html: Added.
2012-03-01 Ryosuke Niwa <rniwa@webkit.org>
DOM tests take too long to run
https://bugs.webkit.org/show_bug.cgi?id=80082
Reviewed by Eric Seidel.
Reduce benchmark.timeToRun from 500ms to 100ms. Doesn't seem to affect test results much
(except DOM/DOMTable.html) but significantly reduces the runtime of tests.
* DOM/resources/dom-perf.js:
(BenchmarkSuite.prototype.RunSingle):
2012-02-26 Kentaro Hara <haraken@chromium.org>
[Performance Tests] [Chromium] Bindings/dom-attributes.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=79593
Reviewed by Adam Barth.
This patch halves the execution time of Bindings/dom-attributes.html
in order to avoid timeout in Chromium. The reason for the timeout is that
V8 DOM bindings are too much slower than JSC bindings.
I am a bit afraid that this patch will reduce the accuracy of the
perf test results, but it would make sense to reduce the execution time
until we fix the performance issue in V8 DOM bindings.
* Bindings/dom-attributes.html:
2012-02-24 Ryosuke Niwa <rniwa@webkit.org>
Rename dom*_*attributes.html to dom*-*attributes.html to follow the WebKit convention.
* Bindings/dom-attributes.html: Copied from PerformanceTests/Bindings/dom_attributes.html.
* Bindings/dom_attributes.html: Removed.
2012-02-24 Kentaro Hara <haraken@chromium.org>
Unreviewed, rolling out r108477.
http://trac.webkit.org/changeset/108477
https://bugs.webkit.org/show_bug.cgi?id=79209
The perf tests committed in r108748 covers the perf tests
committed in r108477. So I'll roll out r108477.
* Bindings/dom_attributes_id_getter.html: Removed.
* Bindings/dom_attributes_id_setter.html: Removed.
* Bindings/resources/dom_attributes_common.js: Removed.
2012-02-24 Kentaro Hara <haraken@chromium.org>
Add performance tests for DOM attribute getters and setters
https://bugs.webkit.org/show_bug.cgi?id=79208
Reviewed by Ryosuke Niwa.
This patch adds performance micro-benchmarks for DOM attribute
getters and setters. We selected DOM attributes from HTMLElement,
Element and Node which will most impact on the DOM performance
in the real Web and which have different call-paths from another
DOM attribute.
The perf test result in my local Chromium/Linux environment is as follows:
median= 14967.0 ms, stdev= 85.2385476178 ms, min= 14861.0 ms, max= 15155.0 ms
If we run the test with DumpRenderTree, we can get the following test results:
Info: [HTMLElement.id] avg=65.76ms, median=65.00ms, stdev=2.14ms, min=63, max=70
Info: [HTMLElement.title] avg=64.05ms, median=63.00ms, stdev=1.50ms, min=63, max=67
Info: [HTMLElement.lang] avg=64.19ms, median=63.00ms, stdev=1.82ms, min=62, max=67
Info: [HTMLElement.dir] avg=64.10ms, median=63.00ms, stdev=1.72ms, min=62, max=68
Info: [HTMLElement.className] avg=63.33ms, median=63.00ms, stdev=0.89ms, min=63, max=67
Info: [HTMLElement.classList] avg=1946.00ms, median=1945.00ms, stdev=38.22ms, min=1921, max=2110
Info: [HTMLElement.tabIndex] avg=83.52ms, median=80.00ms, stdev=6.00ms, min=79, max=94
Info: [HTMLElement.draggable] avg=78.14ms, median=81.00ms, stdev=3.51ms, min=74, max=82
Info: [HTMLElement.webkitdropzone] avg=64.33ms, median=63.00ms, stdev=1.98ms, min=63, max=68
Info: [HTMLElement.hidden] avg=65.57ms, median=64.00ms, stdev=3.27ms, min=63, max=71
Info: [HTMLElement.accessKey] avg=64.43ms, median=63.00ms, stdev=2.11ms, min=62, max=68
Info: [HTMLElement.children] avg=130.76ms, median=128.00ms, stdev=9.75ms, min=109, max=143
Info: [HTMLElement.isContentEditable] avg=74.29ms, median=75.00ms, stdev=2.00ms, min=71, max=77
Info: [HTMLElement.spellcheck] avg=79.52ms, median=80.00ms, stdev=2.52ms, min=76, max=82
Info: [HTMLElement.innerHTML] avg=279.05ms, median=279.00ms, stdev=1.96ms, min=276, max=283
Info: [HTMLElement.innerText] avg=204.14ms, median=203.00ms, stdev=2.95ms, min=200, max=210
Info: [HTMLElement.outerHTML] avg=1544.10ms, median=1546.00ms, stdev=15.56ms, min=1514, max=1568
Info: [HTMLElement.outerText] avg=216.05ms, median=207.00ms, stdev=18.19ms, min=201, max=247
Info: [HTMLElement.contentEditable] avg=334.24ms, median=323.00ms, stdev=36.06ms, min=318, max=446
Info: [HTMLElement.id="foo"] avg=53.19ms, median=53.00ms, stdev=1.76ms, min=52, max=58
Info: [HTMLElement.title="foo"] avg=63.14ms, median=63.00ms, stdev=0.35ms, min=63, max=64
Info: [HTMLElement.lang="foo"] avg=60.86ms, median=61.00ms, stdev=0.56ms, min=60, max=62
Info: [HTMLElement.dir="foo"] avg=53.57ms, median=54.00ms, stdev=0.58ms, min=53, max=55
Info: [HTMLElement.className="foo"] avg=64.52ms, median=64.00ms, stdev=0.91ms, min=63, max=66
Info: [HTMLElement.tabIndex="foo"] avg=367.86ms, median=369.00ms, stdev=8.06ms, min=352, max=380
Info: [HTMLElement.draggable="foo"] avg=79.43ms, median=79.00ms, stdev=0.58ms, min=79, max=81
Info: [HTMLElement.webkitdropzone="foo"] avg=62.14ms, median=62.00ms, stdev=0.35ms, min=62, max=63
Info: [HTMLElement.hidden="foo"] avg=61.67ms, median=62.00ms, stdev=0.71ms, min=61, max=64
Info: [HTMLElement.accessKey="foo"] avg=61.86ms, median=62.00ms, stdev=0.56ms, min=61, max=63
Info: [HTMLElement.spellcheck="foo"] avg=79.57ms, median=80.00ms, stdev=0.58ms, min=78, max=80
Info: [HTMLElement.innerHTML="foo"] avg=1176.67ms, median=1169.00ms, stdev=26.60ms, min=1146, max=1246
Info: [HTMLElement.innerText="foo"] avg=51.62ms, median=52.00ms, stdev=0.72ms, min=50, max=53
Info: [Element.tagName] avg=79.52ms, median=80.00ms, stdev=1.05ms, min=78, max=81
Info: [Element.style] avg=126.19ms, median=126.00ms, stdev=10.40ms, min=104, max=161
Info: [Element.offsetLeft] avg=98.95ms, median=104.00ms, stdev=4.01ms, min=100, max=99
Info: [Element.clientLeft] avg=98.33ms, median=102.00ms, stdev=2.59ms, min=100, max=99
Info: [Element.scrollLeft] avg=103.29ms, median=96.00ms, stdev=15.63ms, min=100, max=97
Info: [Element.dataset] avg=2448.62ms, median=2441.00ms, stdev=20.43ms, min=2426, max=2503
Info: [Element.firstElementChild] avg=58.71ms, median=58.00ms, stdev=2.37ms, min=57, max=65
Info: [Element.lastElementChild] avg=56.33ms, median=55.00ms, stdev=1.83ms, min=54, max=59
Info: [Element.previousElementSibling] avg=52.95ms, median=52.00ms, stdev=1.70ms, min=52, max=57
Info: [Element.nextElementSibling] avg=58.48ms, median=58.00ms, stdev=1.79ms, min=57, max=63
Info: [Element.childElementCount] avg=64.57ms, median=64.00ms, stdev=1.81ms, min=63, max=71
Info: [Element.onload] avg=98.38ms, median=98.00ms, stdev=0.49ms, min=98, max=99
Info: [Element.scrollLeft="foo"] avg=95.24ms, median=95.00ms, stdev=0.92ms, min=94, max=98
Info: [Element.onload="foo"] avg=67.14ms, median=67.00ms, stdev=0.56ms, min=66, max=68
Info: [Node.nodeName] avg=76.29ms, median=76.00ms, stdev=0.63ms, min=75, max=77
Info: [Node.nodeType] avg=53.05ms, median=52.00ms, stdev=2.61ms, min=52, max=61
Info: [Node.parentNode] avg=53.52ms, median=53.00ms, stdev=1.22ms, min=52, max=56
Info: [Node.childNodes] avg=118.33ms, median=123.00ms, stdev=8.85ms, min=107, max=129
Info: [Node.firstChild] avg=53.62ms, median=53.00ms, stdev=1.13ms, min=51, max=55
Info: [Node.lastChild] avg=53.14ms, median=53.00ms, stdev=1.21ms, min=52, max=55
Info: [Node.previousSibling] avg=51.86ms, median=51.00ms, stdev=1.55ms, min=50, max=54
Info: [Node.nextSibling] avg=52.86ms, median=54.00ms, stdev=1.81ms, min=50, max=55
Info: [Node.attributes] avg=2027.71ms, median=2026.00ms, stdev=10.48ms, min=2010, max=2051
Info: [Node.ownerDocument] avg=152.14ms, median=152.00ms, stdev=1.73ms, min=149, max=155
Info: [Node.namespaceURI] avg=60.86ms, median=59.00ms, stdev=3.85ms, min=56, max=66
Info: [Node.localName] avg=60.00ms, median=59.00ms, stdev=2.71ms, min=57, max=66
Info: [Node.baseURI] avg=671.10ms, median=668.00ms, stdev=10.66ms, min=659, max=706
Info: [Node.parentElement] avg=55.05ms, median=56.00ms, stdev=2.15ms, min=52, max=58
Info: [Node.nodeValue] avg=61.24ms, median=60.00ms, stdev=2.56ms, min=59, max=68
Info: [Node.prefix] avg=60.90ms, median=58.00ms, stdev=4.26ms, min=57, max=68
Info: [Node.textContent] avg=149.71ms, median=149.00ms, stdev=1.12ms, min=148, max=152
Info: [Node.nodeValue="foo"] avg=23.62ms, median=23.00ms, stdev=0.72ms, min=23, max=25
Info: [Node.prefix="foo"] avg=49.57ms, median=49.00ms, stdev=0.73ms, min=49, max=51
Info: [Node.textContent="foo"] avg=145.81ms, median=140.00ms, stdev=17.43ms, min=138, max=199
* Bindings/dom_attributes.html: Added.
* resources/runner.js:
(PerfTestRunner.info):
2012-02-22 Kentaro Hara <haraken@chromium.org>
Add performance tests for the Element.id getter and setter
https://bugs.webkit.org/show_bug.cgi?id=79209
Reviewed by Adam Barth.
This patch adds performance tests for the Element.id getter and setter.
The results of 10 runs in my local Chromium/Linux are as follows:
dom_attributes_id_getter.html:
median= 92.0 ms, stdev= 1.65151445649 ms, min= 89.0 ms, max= 96.0 ms
median= 87.5 ms, stdev= 1.84390889146 ms, min= 85.0 ms, max= 92.0 ms
median= 94.0 ms, stdev= 1.46543508898 ms, min= 90.0 ms, max= 95.0 ms
median= 86.0 ms, stdev= 1.66958078571 ms, min= 84.0 ms, max= 91.0 ms
median= 94.0 ms, stdev= 2.25610283454 ms, min= 103.0 ms, max= 98.0 ms
median= 86.0 ms, stdev= 1.49666295471 ms, min= 84.0 ms, max= 91.0 ms
median= 86.0 ms, stdev= 1.5321553446 ms, min= 84.0 ms, max= 90.0 ms
median= 86.0 ms, stdev= 2.20227155455 ms, min= 84.0 ms, max= 94.0 ms
median= 96.0 ms, stdev= 1.74570902501 ms, min= 101.0 ms, max= 99.0 ms
median= 86.0 ms, stdev= 1.63935963108 ms, min= 84.0 ms, max= 90.0 ms
median= 94.0 ms, stdev= 1.49248115566 ms, min= 90.0 ms, max= 95.0 ms
median= 88.0 ms, stdev= 5.20192272146 ms, min= 84.0 ms, max= 98.0 ms
median= 86.0 ms, stdev= 1.41067359797 ms, min= 84.0 ms, max= 89.0 ms
median= 86.0 ms, stdev= 1.48660687473 ms, min= 84.0 ms, max= 89.0 ms
median= 94.0 ms, stdev= 1.58113883008 ms, min= 93.0 ms, max= 97.0 ms
median= 86.0 ms, stdev= 1.95959179423 ms, min= 84.0 ms, max= 93.0 ms
median= 86.0 ms, stdev= 1.8547236991 ms, min= 84.0 ms, max= 92.0 ms
median= 86.0 ms, stdev= 1.39283882772 ms, min= 84.0 ms, max= 89.0 ms
median= 88.0 ms, stdev= 1.48660687473 ms, min= 85.0 ms, max= 90.0 ms
median= 86.5 ms, stdev= 2.3 ms, min= 84.0 ms, max= 93.0 ms
dom_attributes_id_setter.html:
median= 123.0 ms, stdev= 2.06397674406 ms, min= 119.0 ms, max= 128.0 ms
median= 119.0 ms, stdev= 1.92028643697 ms, min= 117.0 ms, max= 123.0 ms
median= 121.0 ms, stdev= 1.8781639971 ms, min= 118.0 ms, max= 123.0 ms
median= 123.0 ms, stdev= 2.21585198062 ms, min= 119.0 ms, max= 130.0 ms
median= 124.5 ms, stdev= 2.36378933071 ms, min= 119.0 ms, max= 129.0 ms
median= 122.0 ms, stdev= 2.4474476501 ms, min= 118.0 ms, max= 128.0 ms
median= 123.0 ms, stdev= 1.76351920885 ms, min= 118.0 ms, max= 125.0 ms
median= 119.0 ms, stdev= 1.79652442232 ms, min= 117.0 ms, max= 125.0 ms
median= 121.0 ms, stdev= 1.49916643506 ms, min= 119.0 ms, max= 123.0 ms
median= 119.5 ms, stdev= 1.85135085816 ms, min= 117.0 ms, max= 125.0 ms
median= 124.0 ms, stdev= 1.43090880213 ms, min= 120.0 ms, max= 124.0 ms
median= 122.0 ms, stdev= 1.45859521458 ms, min= 118.0 ms, max= 123.0 ms
median= 123.0 ms, stdev= 1.50332963784 ms, min= 120.0 ms, max= 124.0 ms
median= 123.0 ms, stdev= 1.3638181697 ms, min= 120.0 ms, max= 125.0 ms
median= 119.0 ms, stdev= 1.43527000944 ms, min= 117.0 ms, max= 121.0 ms
median= 122.5 ms, stdev= 1.71682847134 ms, min= 118.0 ms, max= 124.0 ms
median= 121.0 ms, stdev= 1.44481832768 ms, min= 118.0 ms, max= 123.0 ms
median= 120.0 ms, stdev= 1.40978721799 ms, min= 117.0 ms, max= 122.0 ms
median= 122.0 ms, stdev= 1.68522995464 ms, min= 119.0 ms, max= 125.0 ms
median= 122.0 ms, stdev= 1.55804364509 ms, min= 118.0 ms, max= 123.0 ms
* Bindings/dom_attributes_id_getter.html: Added.
* Bindings/dom_attributes_id_setter.html: Added.
* Bindings/resources/dom_attributes_common.js: Added.
2012-02-16 Alexis Menard <alexis.menard@openbossa.org>
Add a perf test for the CSS parser.
https://bugs.webkit.org/show_bug.cgi?id=78114
Reviewed by Ryosuke Niwa.
Add a perf test for the CSS parser. It load a big CSS chunk
which contains some snippets of the YUI library from Yahoo!.
* Parser/css-parser-yui.html: Added.
2012-02-08 Hajime Morrita <morrita@chromium.org>
[PerformanceTests] sunspider-crypto-md5.html and sunspider-crypto-sha1.html are timing out on cr-mac perf bot
https://bugs.webkit.org/show_bug.cgi?id=78174
Reviewed by Ryosuke Niwa.
Pulled back removed files.
* Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-md5.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-sha1.html: Added.
2012-02-02 Hajime Morrita <morrita@chromium.org>
[PerformanceTests] Each Dromaeo test needs its landing html.
https://bugs.webkit.org/show_bug.cgi?id=77504
Reviewed by Ryosuke Niwa.
- Added landing pages for each test which are listed in MANIFEST.json
- Removed some tests which depends on the library whose license is incompatible to WebKit.
- Added local copy of corresponding library. And replace the references to the remote sources
to the local copies.
- Removed old library files under Dromaeo/resources/dromaeo/web/lib/.
- Skipped Sunsupier and v8 test. Such JS centric test should have its own test instead of
running as a part of Dromaeo.
* Dromaeo/cssquery-dojo.html: Added.
* Dromaeo/cssquery-jquery.html: Added.
* Dromaeo/cssquery-prototype.html: Added.
* Dromaeo/dom-attr.html: Added.
* Dromaeo/dom-modify.html: Added.
* Dromaeo/dom-traverse.html: Added.
* Dromaeo/dromaeo-3d-cube.html: Added.
* Dromaeo/dromaeo-core-eval.html: Added.
* Dromaeo/dromaeo-object-array.html: Added.
* Dromaeo/dromaeo-object-regexp.html: Added.
* Dromaeo/dromaeo-object-string.html: Added.
* Dromaeo/dromaeo-string-base64.html: Added.
* Dromaeo/jslib-attr-jquery.html: Added.
* Dromaeo/jslib-attr-prototype.html: Added.
* Dromaeo/jslib-event-jquery.html: Added.
* Dromaeo/jslib-event-prototype.html: Added.
* Dromaeo/jslib-modify-jquery.html: Added.
* Dromaeo/jslib-modify-prototype.html: Added.
* Dromaeo/jslib-style-jquery.html: Added.
* Dromaeo/jslib-style-prototype.html: Added.
* Dromaeo/jslib-traverse-jquery.html: Added.
* Dromaeo/jslib-traverse-prototype.html: Added.
* Dromaeo/resources/dromaeo/web/lib/dojo.js: Removed.
* Dromaeo/resources/dromaeo/web/lib/dojo-1.6.1.js: Added.
* Dromaeo/resources/dromaeo/web/lib/jquery.js: Removed.
* Dromaeo/resources/dromaeo/web/lib/jquery-1.6.4.js: Added.
* Dromaeo/resources/dromaeo/web/lib/mootools.js: Removed.
* Dromaeo/resources/dromaeo/web/lib/prototype.js: Removed.
* Dromaeo/resources/dromaeo/web/lib/prototype-1.7.js: Added.
* Dromaeo/resources/dromaeo/web/tests/cssquery-dojo.html:
* Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/cssquery-mootools.html: Removed.
* Dromaeo/resources/dromaeo/web/tests/cssquery-prototype.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-attr-prototype.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-event-prototype.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-modify-prototype.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-style-prototype.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html:
* Dromaeo/resources/dromaeo/web/tests/jslib-traverse-prototype.html:
* Dromaeo/sunspider-3d-morph.html: Added.
* Dromaeo/sunspider-3d-raytrace.html: Added.
* Dromaeo/sunspider-access-binary-trees.html: Added.
* Dromaeo/sunspider-access-fannkuch.html: Added.
* Dromaeo/sunspider-access-nbody.html: Added.
* Dromaeo/sunspider-access-nsieve.html: Added.
* Dromaeo/sunspider-bitops-3bit-bits-in-byte.html: Added.
* Dromaeo/sunspider-bitops-bits-in-byte.html: Added.
* Dromaeo/sunspider-bitops-bitwise-and.html: Added.
* Dromaeo/sunspider-bitops-nsieve-bits.html: Added.
* Dromaeo/sunspider-controlflow-recursive.html: Added.
* Dromaeo/sunspider-crypto-aes.html: Added.
* Dromaeo/sunspider-crypto-md5.html: Added.
* Dromaeo/sunspider-crypto-sha1.html: Added.
* Dromaeo/sunspider-date-format-tofte.html: Added.
* Dromaeo/sunspider-date-format-xparb.html: Added.
* Dromaeo/sunspider-math-cordic.html: Added.
* Dromaeo/sunspider-math-partial-sums.html: Added.
* Dromaeo/sunspider-math-spectral-norm.html: Added.
* Dromaeo/sunspider-regexp-dna.html: Added.
* Dromaeo/sunspider-string-fasta.html: Added.
* Dromaeo/sunspider-string-tagcloud.html: Added.
* Dromaeo/sunspider-string-unpack-code.html: Added.
* Dromaeo/sunspider-string-validate-input.html: Added.
* Dromaeo/v8-crypto.html: Added.
* Dromaeo/v8-deltablue.html: Added.
* Dromaeo/v8-earley-boyer.html: Added.
* Dromaeo/v8-raytrace.html: Added.
* Dromaeo/v8-richards.html: Added.
* Skipped:
2012-02-02 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r106543.
http://trac.webkit.org/changeset/106543
https://bugs.webkit.org/show_bug.cgi?id=77671
Made tests less stable (Requested by rniwa on #webkit).
* resources/init.html: Removed.
2012-02-02 Ryosuke Niwa <rniwa@webkit.org>
[PerformanceTests] tests have dependencies
https://bugs.webkit.org/show_bug.cgi?id=77506
Reviewed by Hajime Morita.
* resources/init.html: Added.
2012-02-01 Ryosuke Niwa <rniwa@webkit.org>
Fix after r106386. The empty anchor element was generating an erroneous whitespace.
* Bindings/event-target-wrapper.html:
2012-02-01 Ryosuke Niwa <rniwa@webkit.org>
Another fix after r106379.
* Parser/html5-full-render.html:
2012-01-31 Hajime Morrita <morrita@chromium.org>
Import Dromaeo to WebKit repository.
https://bugs.webkit.org/show_bug.cgi?id=77328
Reviewed by Ryosuke Niwa.
Imported a modified version of Dromaeo which is able to
run on the DRT.
The imported version originally came from:
https://github.com/omo/dromaeo/commit/c942a1452109cdd5f759b3c4aee8d68d490d44a2
* Dromaeo/resources/dromaeo/web/application.css: Added.
* Dromaeo/resources/dromaeo/web/favicon.ico: Added.
* Dromaeo/resources/dromaeo/web/favicon.png: Added.
* Dromaeo/resources/dromaeo/web/htmlrunner.js: Added.
* Dromaeo/resources/dromaeo/web/ie.css: Added.
* Dromaeo/resources/dromaeo/web/images/bg.png: Added.
* Dromaeo/resources/dromaeo/web/images/clouds.png: Added.
* Dromaeo/resources/dromaeo/web/images/clouds2.png: Added.
* Dromaeo/resources/dromaeo/web/images/comets.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino1.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino2.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino3.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino4.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino5.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino6.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino7.png: Added.
* Dromaeo/resources/dromaeo/web/images/dino8.png: Added.
* Dromaeo/resources/dromaeo/web/images/left.png: Added.
* Dromaeo/resources/dromaeo/web/images/logo.png: Added.
* Dromaeo/resources/dromaeo/web/images/logo2.png: Added.
* Dromaeo/resources/dromaeo/web/images/logo3.png: Added.
* Dromaeo/resources/dromaeo/web/images/right.png: Added.
* Dromaeo/resources/dromaeo/web/images/top.png: Added.
* Dromaeo/resources/dromaeo/web/images/water.png: Added.
* Dromaeo/resources/dromaeo/web/index.html: Added.
* Dromaeo/resources/dromaeo/web/jquery.js: Added.
* Dromaeo/resources/dromaeo/web/lib/dojo.js: Added.
* Dromaeo/resources/dromaeo/web/lib/jquery.js: Added.
* Dromaeo/resources/dromaeo/web/lib/mootools.js: Added.
* Dromaeo/resources/dromaeo/web/lib/prototype.js: Added.
* Dromaeo/resources/dromaeo/web/pngfix.js: Added.
* Dromaeo/resources/dromaeo/web/reset.css: Added.
* Dromaeo/resources/dromaeo/web/test-head.html: Added.
* Dromaeo/resources/dromaeo/web/test-head.js: Added.
* Dromaeo/resources/dromaeo/web/test-tail.html: Added.
* Dromaeo/resources/dromaeo/web/test-tail.js: Added.
* Dromaeo/resources/dromaeo/web/tests/MANIFEST.json: Added.
* Dromaeo/resources/dromaeo/web/tests/cssquery-dojo.html: Added.
* Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html: Added.
* Dromaeo/resources/dromaeo/web/tests/cssquery-mootools.html: Added.
* Dromaeo/resources/dromaeo/web/tests/cssquery-prototype.html: Added.
* Dromaeo/resources/dromaeo/web/tests/cssquery-yui.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dom-attr.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dom-modify.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dom-query.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dom-traverse.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dromaeo-3d-cube.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dromaeo-core-eval.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dromaeo-object-array.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dromaeo-object-regexp.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dromaeo-object-string.html: Added.
* Dromaeo/resources/dromaeo/web/tests/dromaeo-string-base64.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-attr-prototype.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-event-prototype.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-modify-prototype.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-style-prototype.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html: Added.
* Dromaeo/resources/dromaeo/web/tests/jslib-traverse-prototype.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-3d-morph.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-3d-raytrace.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-access-binary-trees.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-access-fannkuch.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-access-nbody.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-access-nsieve.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-3bit-bits-in-byte.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bits-in-byte.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bitwise-and.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-nsieve-bits.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-controlflow-recursive.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-aes.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-md5.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-sha1.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-date-format-tofte.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-date-format-xparb.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-math-cordic.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-math-partial-sums.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-math-spectral-norm.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-regexp-dna.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-string-fasta.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-string-tagcloud.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-string-unpack-code.html: Added.
* Dromaeo/resources/dromaeo/web/tests/sunspider-string-validate-input.html: Added.
* Dromaeo/resources/dromaeo/web/tests/v8-crypto.html: Added.
* Dromaeo/resources/dromaeo/web/tests/v8-deltablue.html: Added.
* Dromaeo/resources/dromaeo/web/tests/v8-earley-boyer.html: Added.
* Dromaeo/resources/dromaeo/web/tests/v8-raytrace.html: Added.
* Dromaeo/resources/dromaeo/web/tests/v8-richards.html: Added.
* Dromaeo/resources/dromaeo/web/tests/72px.png: Added.
* Dromaeo/resources/dromaeo/web/web-style.css: Added.
* Dromaeo/resources/dromaeo/web/webrunner.js: Added.
* Skipped: Unskip the dromaeo driver.
2012-01-31 Ryosuke Niwa <rniwa@webkit.org>
Fix Parser/html5-full-render.html after r106379.
* Parser/html5-full-render.html:
2012-01-31 Ryosuke Niwa <rniwa@webkit.org>
PerfTestRunner should automatically create pre#log
https://bugs.webkit.org/show_bug.cgi?id=77469
Reviewed by Tony Chang.
Automatically generate <pre id="log"></pre> if there isn't one.
* Bindings/event-target-wrapper.html:
* DOM/Accessors.html:
* DOM/CloneNodes.html:
* DOM/CreateNodes.html:
* DOM/DOMDivWalk.html:
* DOM/DOMTable.html:
* DOM/DOMWalk.html:
* DOM/Events.html:
* DOM/GetElement.html:
* DOM/GridSort.html:
* DOM/Template.html:
* Dromaeo/dom-query.html:
* Dromaeo/resources/dromaeorunner.js:
* Parser/html-parser.html:
* Parser/html5-full-render.html:
* Parser/simple-url.html:
* Parser/tiny-innerHTML.html:
* Parser/url-parser.html:
* Parser/xml-parser.html:
* resources/runner.js:
(PerfTestRunner.log):
(PerfTestRunner.printStatistics):
2012-01-31 Ryosuke Niwa <rniwa@webkit.org>
runner.js in performance tests should define a class
https://bugs.webkit.org/show_bug.cgi?id=77074
Reviewed by Eric Seidel.
Wrap all functions in runner.js by PerfTestRunner and update tests that runner.js accordingly.
Also replace compute* functions in runner.js by more robust code from dom-perf.js.
* Bindings/event-target-wrapper.html:
* DOM/DOMTable.html:
* DOM/resources/dom-perf.js:
(BenchmarkSuite.prototype.RunSingle):
(runBenchmarkSuite):
* Mutation/append-child-deep.html:
* Mutation/append-child.html:
* Mutation/inner-html.html:
* Mutation/remove-child-deep.html:
* Mutation/remove-child.html:
* Parser/html-parser.html:
* Parser/html5-full-render.html:
* Parser/simple-url.html:
* Parser/tiny-innerHTML.html:
* Parser/url-parser.html:
* Parser/xml-parser.html:
* resources/runner.js:
(PerfTestRunner.log):
(PerfTestRunner.logInfo):
(PerfTestRunner.loadFile):
(PerfTestRunner.computeStatistics):
(PerfTestRunner.logStatistics):
(PerfTestRunner._runLoop.else):
(PerfTestRunner._runLoop):
(PerfTestRunner._runner):
2012-01-31 Hajime Morrita <morrita@chromium.org>
[PerformanceTests] Add landing html for Dromaeo dom-query test
https://bugs.webkit.org/show_bug.cgi?id=77329
Reviewed by Ryosuke Niwa.
Added a "landing html" which includes actual dromaemo page and
send messages to interact with it. The landing html also dumps the
score in run-perf-tests friendly format.
This test isn't enabled until Dromaemo itself is available for run-perf-tests.
It will happen in a separate change.
* Dromaeo/dom-query.html: Added.
* Dromaeo/resources/dromaeorunner.js: Added.
* Skipped: Skipping this for now.
2012-01-30 Ryosuke Niwa <rniwa@webkit.org>
Skip inspector tests since they have been timing out.
* Skipped:
2012-01-29 Ryosuke Niwa <rniwa@webkit.org>
DOM/DOMDivWalk.html result is unreliable
https://bugs.webkit.org/show_bug.cgi?id=77313
Reviewed by Adam Barth.
Trigger garbage collection manually between test runs to avoid GC
to occur in the middle of runs.
* DOM/resources/dom-perf.js:
(BenchmarkSuite.prototype.RunSingle):
* resources/runner.js:
(gc.else.gcRec):
(gc):
(runLoop):
2012-01-26 Ryosuke Niwa <rniwa@webkit.org>
Import Chromium's dom_perf test
https://bugs.webkit.org/show_bug.cgi?id=77175
Reviewed by Adam Barth.
Import dom_perf.
Note resources/dom/suites.js isn't used by any html file yet but it will be used by Chromium port
once its perf bots start pulling test files from WebKit repository instead of Google's internal repository.
* DOM: Added.
* DOM/Accessors.html: Added.
* DOM/CloneNodes.html: Added.
* DOM/CreateNodes.html: Added.
* DOM/DOMDivWalk.html: Added.
* DOM/DOMTable.html: Added.
* DOM/DOMWalk.html: Added.
* DOM/Events.html: Added.
* DOM/GetElement.html: Added.
* DOM/GridSort.html: Added.
* DOM/Template.html: Added.
* DOM/resources: Added.
* DOM/resources/dom-perf.js: Added.
* DOM/resources/dom-perf: Added.
* DOM/resources/dom-perf/accessors.js: Added.
* DOM/resources/dom-perf/clonenodes.js: Added.
* DOM/resources/dom-perf/createnodes.js: Added.
* DOM/resources/dom-perf/domdivwalk.js: Added.
* DOM/resources/dom-perf/domtable.js: Added.
* DOM/resources/dom-perf/domwalk.js: Added.
* DOM/resources/dom-perf/events.js: Added.
* DOM/resources/dom-perf/getelement.js: Added.
* DOM/resources/dom-perf/gridsort.js: Added.
* DOM/resources/dom-perf/suites.js: Added.
* DOM/resources/dom-perf/template.js: Added.
* resources/runner.js:
2012-01-25 Ryosuke Niwa <rniwa@webkit.org>
html5-full-render.html fails due to a log
https://bugs.webkit.org/show_bug.cgi?id=77046
Reviewed by Adam Barth.
Replace the call to log() in html5-full-render.html by a call to newly added logInfo(),
which doesn't print anything inside DRT.
* Parser/html5-full-render.html:
* resources/runner.js:
(logInfo):
2012-01-19 Adam Barth <abarth@webkit.org>
PerformanceTests's runner.js shouldn't be Parser-specific
https://bugs.webkit.org/show_bug.cgi?id=76670
Reviewed by Ryosuke Niwa.
This runner script is used by a bunch of difference performance tests.
It shouldn't be in the Parser directory anymore.
* Bindings/event-target-wrapper.html:
* Mutation/append-child-deep.html:
* Mutation/append-child.html:
* Mutation/inner-html.html:
* Mutation/remove-child-deep.html:
* Mutation/remove-child.html:
* Parser/html-parser.html:
* Parser/html5-full-render.html:
* Parser/resources/runner.js: Removed.
* Parser/simple-url.html:
* Parser/tiny-innerHTML.html:
* Parser/url-parser.html:
* Parser/xml-parser.html:
* resources: Added.
* resources/runner.js: Copied from PerformanceTests/Parser/resources/runner.js.
2012-01-19 Ryosuke Niwa <rniwa@webkit.org>
Some perf tests time out when ran by run-perf-tests
https://bugs.webkit.org/show_bug.cgi?id=76612
Reviewed by Dirk Pranke and Eric Seidel.
Replace all images in html5.html by geenbox.png to avoid accessing whatwg.org when
running the parser tests. Also call dumpAsText, waitUntilDone, and notifyDone automatically
inside runner.js to avoid having to call them in individual tests.
* Bindings/event-target-wrapper.html: Removed calls to layoutTestController methods since
they are now called by runner.js automatically.
* Parser/resources/greenbox.png: Copied from LayoutTests/fast/css/resources/greenbox.png.
* Parser/resources/html5.html:
* Parser/resources/runner.js:
(runLoop):
2012-01-18 Ryosuke Niwa <rniwa@webkit.org>
run-perf-tests should support Skipped list
https://bugs.webkit.org/show_bug.cgi?id=76594
Reviewed by Adam Barth.
Add Skipped list to be used by run-perf-tests as it can only runs tests in
Bindings, Parser, and inspector at the moment.
* Skipped: Added.
2012-01-12 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: performance: restore 'log 300 messages into console' test.
https://bugs.webkit.org/show_bug.cgi?id=76170
It was removed in order of transition from layout tests to perf tests.
Reviewed by Yury Semikhatsky.
* inspector/console-300-lines.html: Added.
2012-01-12 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: performance tests: fix memory leak in first-open-resources test.
https://bugs.webkit.org/show_bug.cgi?id=76049
first-open-resources doesn't reset resource panel properly after test run.
Reviewed by Yury Semikhatsky.
* inspector/first-open-resources.html:
2012-01-10 Ilya Tikhonovsky <loislo@chromium.org>
Unreviewed. WebInspector: Remove unnecessary logging from the test.
* inspector/first-open-resources.html:
2012-01-10 Ilya Tikhonovsky <loislo@chromium.org>
Unreviewed. Restore test that was removed during migration from LayoutTests folder.
* inspector/first-open-resources.html: Added.
2012-01-09 Ilya Tikhonovsky <loislo@chromium.org>
Unreviewed test fix after r103683.
* inspector/first-open-scripts.html:
* inspector/show-panel.html:
2012-01-03 Adam Barth <abarth@webkit.org>
html-parser.html takes too long to run
https://bugs.webkit.org/show_bug.cgi?id=75515
Reviewed by Eric Seidel.
In working on runner.js, we introduced a factor of 10 increase to the
running time of this benchmark. This patch dials down the number of
iterations to something more user-friendly.
* Parser/html-parser.html:
2011-12-18 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: move heap data stats to separate tab.
https://bugs.webkit.org/show_bug.cgi?id=74704
Reviewed by Pavel Feldman.
* inspector/performance-test.js:
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._dump):
(initialize_TimeTracker.InspectorTest.runPerformanceTest):
2011-12-01 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: chromium: move and adapt Inspector's performance tests for running with run-inspector-perf-tests.py.
https://bugs.webkit.org/show_bug.cgi?id=72260
Reviewed by Pavel Feldman.
* inspector/first-open-elements.html: Renamed from LayoutTests/inspector/performance/resources/first-open-elements.html.
* inspector/first-open-scripts.html: Renamed from LayoutTests/inspector/performance/resources/first-open-scripts.html.
* inspector/inspector-startup-time.html: Renamed from LayoutTests/inspector/performance/resources/inspector-startup-time.html.
* inspector/network-append-30-requests.html: Renamed from LayoutTests/inspector/performance/resources/network-append-30-requests.html.
* inspector/performance-test.js: Renamed from LayoutTests/inspector/performance/resources/performance-test.js.
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.start):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.finish):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._getJSHeapSize):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.done):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._runTest):
(initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._dump):
(initialize_TimeTracker.InspectorTest.runPerformanceTest):
(initialize_TimeTracker.InspectorTest.mark):
* inspector/show-panel.html: Renamed from LayoutTests/inspector/performance/resources/show-panel.html.
2011-11-09 Adam Klein <adamk@chromium.org>
[MutationObservers] Microbenchmarks for appendChild, removeChild, and innerHTML
https://bugs.webkit.org/show_bug.cgi?id=71939
Reviewed by Ojan Vafai.
These benchmarks time both the DOM mutations themselves and the time taken
to call the MutationCallback. This measurement is achieved by
executing the code entirely within the MutationCallback itself.
* Mutation/append-child-deep.html: Added. Covers appendChild in a 200-node-deep tree with subtree observation.
* Mutation/append-child.html: Added. Covers appendChild in a flat tree.
* Mutation/inner-html.html: Added. Covers innerHTML adding and removing many nodes at a time.
* Mutation/remove-child-deep.html: Added. Covers removeChild in a 200-node-deep tree with subtree observation.
* Mutation/remove-child.html: Added. Covers removeChild in a flat tree.
2011-10-25 Adam Barth <abarth@webkit.org>
EventTargetFactory.in is not sorted
https://bugs.webkit.org/show_bug.cgi?id=70855
Reviewed by Eric Seidel.
Add a microbenchmark for wrapping event target.
* Bindings: Added.
* Bindings/event-target-wrapper.html: Added.
* Parser/resources/runner.js:
(runLoop):
- Let the user of the harness get a callback when the test is done.
2011-10-04 Eric Seidel <eric@webkit.org>
Update html5-full-render.html to load the HTML5 spec incrementally, closer to how the browser would
https://bugs.webkit.org/show_bug.cgi?id=69374
Unreviewed.
Per https://bugs.webkit.org/show_bug.cgi?id=69374#c7
updating the chunksize to be a bit smaller now that the total
size of the html5 spec is smaller than when I wrote the test.
This should increase the prevalence of style resolution in the
sample time, which more closely matches instrument samples
taken when loading the full page in Safari.
* Parser/html5-full-render.html:
2011-10-04 Eric Seidel <eric@webkit.org>
Update html5-full-render.html to load the HTML5 spec incrementally, closer to how the browser would
https://bugs.webkit.org/show_bug.cgi?id=69374
Reviewed by James Robinson.
This should finally be able to provide us with a repeatable metric
for how fast we're currently able to load the HTML5 spec.
There are a variety of interesting functions which show up in this
sample, including of course style resolution.
* Parser/html5-full-render.html:
2011-10-04 Eric Seidel <eric@webkit.org>
Update our copy of the HTML5 spec used for performance testing to match the latest version
https://bugs.webkit.org/show_bug.cgi?id=69364
Unreviewed. The patch is too large to post, so landing this unreviewed. :(
The copy of the html5 spec we were using for testing was over a year old
and didn't have any of the subresources with it (we were only using it
as an HTML parsing benchmark). I'm about to use it for testing
the full load/render time of the benchmark, so I've updated to the latest
version of the spec (now 8mb instead of 5mb) and inlined two of the
CSS files. (Inlining the CSS was necessary to make my testing consistent
as there seems to be a race with some timer fired after CSS load.)
Increasing from 5mb to 8mb showed a similar 30% slowdown in our parser
benchmarks as expected.
* Parser/resources/html5.html:
2011-10-04 Eric Seidel <eric@webkit.org>
Add loopsPerRun option to Parser performance test runner
https://bugs.webkit.org/show_bug.cgi?id=69363
Reviewed by Antti Koivisto.
Add loopsPerRun option and abstract out runLoop function (to make the UI more responsive).
No change in behavior in any of the tests.
* Parser/resources/runner.js:
(runLoop):
(run):
(start):
2011-10-03 Eric Seidel <eric@webkit.org>
Add a microbenchmark for a full-page render of the HTML5 spec
https://bugs.webkit.org/show_bug.cgi?id=69285
Reviewed by Adam Barth.
This was designed to be a test for https://bugs.webkit.org/show_bug.cgi?id=68944
But it seems that by far our dominating cost for the HTML5 benchmark is
time spent laying out lines (which isn't actually that surprising).
I'm adding the performance test for posterity.
* Parser/html-parser.html:
- Removed use of "about:blank" which abarth says is a no-op. Made comment more accurate.
* Parser/html5-full-render.html: Copied from PerformanceTests/Parser/html-parser.html.
2011-10-03 Eric Seidel <eric@webkit.org>
PerformanceTests/Parser/html-parser is only testing parsing of the head element
https://bugs.webkit.org/show_bug.cgi?id=69283
Reviewed by Adam Barth.
While investigating https://bugs.webkit.org/show_bug.cgi?id=68944
I found that the html-parser benchmark was only parsing up to the
first script tag per loop! We've fixed this by adding the sandbox
tag which will deny all external loads and allow the parser to
synchronously continue parsing the entire document to completion
(as we had expected it was doing).
This changes the profile somewhat. Line number counting is much
hotter, since we're actually accounting for the parse of the entire
document in our sample.
Total sample time only about doubles, from 1800ms to 3800ms on my machine
which is less than I would have expected.
* Parser/html-parser.html:
2011-08-09 Alexandru Chiculita <achicu@adobe.com>
Fixing 65868 REGRESSION(r92610) caused by 65668 - Optimize floating elements lookup
https://bugs.webkit.org/show_bug.cgi?id=65871
Reviewed by Dave Hyatt.
* Layout/floats.html: Added the nested divs, so that we can test the propagation impact of the floats tree.
2011-08-08 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r92610.
http://trac.webkit.org/changeset/92610
https://bugs.webkit.org/show_bug.cgi?id=65868
Caused assertion failures when running fast/multicol tests
(Requested by andersca on #webkit).
* Layout/floats.html:
2011-08-08 Alexandru Chiculita <achicu@adobe.com>
Optimize floating elements lookup
https://bugs.webkit.org/show_bug.cgi?id=65668
Reviewed by David Hyatt.
* Layout/floats.html: Added the nested divs, so that we can test the propagation impact of the floats tree.
2011-08-04 Alexandru Chiculita <achicu@adobe.com>
Add a performance test for floating elements layout algorithm
https://bugs.webkit.org/show_bug.cgi?id=65741
The test creating lots of small floats and randomly changes
the width of one element at a time. It measures how often it can do that.
Reviewed by Adam Barth.
* Layout/floats.html: Added.
2011-05-30 Daniel Bates <dbates@webkit.org>
Reviewed by Adam Barth.
Rename XSSFilter to XSSAuditor
https://bugs.webkit.org/show_bug.cgi?id=61718
Currently we use the names XSSFilter and XSSAuditor throughout the project.
Instead, we should choose one name for consistency.
No functionality was changed. So, no new tests.
* XSSAuditor: Copied from PerformanceTests/XSSFilter.
* XSSFilter: Removed.
* XSSFilter/large-post-many-events.html: Removed.
* XSSFilter/large-post-many-inline-scripts-and-events.html: Removed.
* XSSFilter/resources: Removed.
* XSSFilter/resources/target-for-large-post-many-inline-scripts-and-events.html: Removed.
2011-03-25 Leo Yang <leo.yang@torchmobile.com.cn>
Reviewed by Dirk Schulze.
SVG <use> element performance improvement
https://bugs.webkit.org/show_bug.cgi?id=57077
Add a manual test case which is from
http://upload.wikimedia.org/wikipedia/commons/4/4e/Sierpinski_carpet_6.svg
for svg <use> element performance test.
* PageLoad/svg/files/Sierpinski_carpet_6.svg: Added.
* PageLoad/svg/svg.pltsuite:
2011-02-05 Eric Seidel <eric@webkit.org>
Reviewed by Adam Barth.
Add performance tests for URL parsing
https://bugs.webkit.org/show_bug.cgi?id=53845
The final-url-en URL corpus is from:
http://corpus.leeds.ac.uk/internet.html
There are also other language corpuses which we may want to use in the future.
The usage instructions were as follows:
"URL lists and other resources: you can freely use them in your research
provided that you supply a link to this website: http://corpus.leeds.ac.uk/."
Done.
* Parser/simple-url.html: Added.
On my machine:
Firefox: 255ms
TOT WebKit: 378ms
Chrome: 286ms
Opera: 2830ms (no, that is not a typo)
* Parser/url-parser.html: Added.
Firefox: 381ms
TOT WebKit: 216ms
Chrome: 131ms
Opera: 1383ms (again, not a typo)
* Parser/resources/final-url-en: Added.
2011-02-03 Adam Barth <abarth@webkit.org>
Reviewed by Daniel Bates.
Add another XSSFilter PerformanceTest
https://bugs.webkit.org/show_bug.cgi?id=53750
This PerformanceTest tests the case that was slow in
https://bugs.webkit.org/show_bug.cgi?id=49845
* XSSFilter/large-post-many-inline-scripts-and-events.html: Added.
* XSSFilter/resources: Added.
* XSSFilter/resources/target-for-large-post-many-inline-scripts-and-events.html: Added.
2011-02-03 Adam Barth <abarth@webkit.org>
Reviewed by Eric Seidel.
Add PerformanceTest for XSSFilter
https://bugs.webkit.org/show_bug.cgi?id=53741
This performance tests covers the case of a large POST data and many
small event handlers.
* XSSFilter: Added.
* XSSFilter/large-post-many-events.html: Added.
2011-02-02 Adam Barth <abarth@webkit.org>
Rubber-stamped by Eric Seidel.
Merge PerformanceTests/Parser/ChangeLog and
PerformanceTests/PageLoad/ChangeLog into PerformanceTests/ChangeLog.
It's silly to have ChangeLogs for each of these directories separately.
I've left SunSpider with its own ChangeLog because it's more of an
independent entity.
* ChangeLog: Added.
2011-02-02 Eric Seidel <eric@webkit.org>
Unreviewed. Just fixing an exception seen in Firefox.
HTML5 TreeBuilder regressed a Peacekeeper DOM test by 40%
https://bugs.webkit.org/show_bug.cgi?id=48719
Make the benchmarks work in Firefox/Opera.
* resources/runner.js:
(log):
2011-01-27 Eric Seidel <eric@webkit.org>
Reviewed by Darin Adler.
HTML5 TreeBuilder regressed a Peacekeeper DOM test by 40%
https://bugs.webkit.org/show_bug.cgi?id=48719
It's unclear exactly what the Peacekeeper benchmark is testing,
because I haven't found a way to run it myself.
However, I constructed a benchmark which shows at least one possible slow point.
The HTML5 spec talks about creating a new document for every time we use
the fragment parsing algorithm. Document() it turns out, it a huge bloated
mess, and the constructor and destructor do a huge amount of work.
* benchmarks/parser/tiny-innerHTML.html: Added.
2011-01-29 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r77050.
http://trac.webkit.org/changeset/77050
https://bugs.webkit.org/show_bug.cgi?id=53371
Caused a crash in Chromium's test_shell_tests (Requested by
rniwa on #webkit).
* resources/performance-test.js: Removed.
* tiny-innerHTML.html: Removed.
2011-01-28 Eric Seidel <eric@webkit.org>
Reviewed by Darin Adler.
HTML5 TreeBuilder regressed a Peacekeeper DOM test by 40%
https://bugs.webkit.org/show_bug.cgi?id=48719
It's unclear exactly what the Peacekeeper benchmark is testing,
because I haven't found a way to run it myself.
However, I constructed a benchmark which shows at least one possible slow point.
The HTML5 spec talks about creating a new document for every time we use
the fragment parsing algorithm. Document() it turns out, it a huge bloated
mess, and the constructor and destructor do a huge amount of work.
To avoid constructing (or destructing) documents for each innerHTML call,
this patch adds a shared dummy document used by all innerHTML calls.
* benchmarks/parser/tiny-innerHTML.html: Added.
2010-12-31 Adam Barth <abarth@webkit.org>
Rubber-stamped by Eric Seidel.
Move HTML and XML parser benchmarks into PerformanceTests/Parser
https://bugs.webkit.org/show_bug.cgi?id=51772
Add a ChangeLog for tracking changes to the Parser PerformanceTest.
* ChangeLog: Added.
2010-12-31 Adam Barth <abarth@webkit.org>
Rubber-stamped by Eric Seidel.
Move PageLoadTests to PerformanceTests/PageLoad
https://bugs.webkit.org/show_bug.cgi?id=51771
Update URLs to point to the new directory name.
* svg/svg.pltsuite:
2006-12-26 Eric Seidel <eric@webkit.org>
Reviewed by olliej.
* svg/svg.pltsuite: re-enable word-iso.svg after fixing http://bugs.webkit.org/show_bug.cgi?id=11987
2006-12-26 Eric Seidel <eric@webkit.org>
Reviewed by bradee-oh.
Add new PageLoadTests directory (this one)
Add LICENSES file to explain where each SVG came from.
* ChangeLog: Added.
* svg/LICENSES: Added.
* svg/files/33041-Samurai.svg: Added.
* svg/files/42470-flower_from_my_garden_v2.svg: Added.
* svg/files/Harvey_Rayner.svg: Added.
* svg/files/az-lizard_benji_park_01.svg: Added.
* svg/files/bamboo_01.svg: Added.
* svg/files/cacuts_01.svg: Added.
* svg/files/cowboy.svg: Added.
* svg/files/crawfish2_ganson.svg: Added.
* svg/files/deb9frac1.svg: Added.
* svg/files/food_leif_lodahl_01.svg: Added.
* svg/files/france.svg: Added.
* svg/files/francobollo_gnome_ezechi_02.svg: Added.
* svg/files/gearflowers.svg: Added.
* svg/files/hereGear4.svg: Added.
* svg/files/mtsthelens.svg: Added.
* svg/files/mtsthelens0.jpg: Added.
* svg/files/world-iso.svg: Added.
* svg/files/worldcup.svg: Added.
* svg/svg.pltsuite: Added.