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.

