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.

