Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Nov 06, 2012

  1. DOMImplementation should use ScriptWrappable

    https://bugs.webkit.org/show_bug.cgi?id=101279
    
    Reviewed by Eric Seidel.
    
    PerformanceTests:
    
    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.
    
    Source/WebCore:
    
    This patch makes DOMImplementation ScriptWrappable. Both the V8 and JSC
    bindings automatically detect the presence of this base class and use
    it to optimize getting and setting JavaScript wrappers.
    
    This patch is a 23% progression on Bindings/document-implementation for
    the V8 bindings and a 69% progression for the JSC bindings.
    
    * dom/DOMImplementation.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@133657 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    abarth@webkit.org authored

Oct 22, 2012

  1. [V8] Vastly simplify V8GCController's NodeVisitor

    https://bugs.webkit.org/show_bug.cgi?id=99884
    
    Reviewed by Kentaro Hara.
    
    PerformanceTests:
    
    Adds some performance tests for the garbage collector.
    
    * Bindings/gc-forest.html: Added.
    * Bindings/gc-mini-tree.html: Added.
    * Bindings/gc-tree.html: Added.
    
    Source/WebCore:
    
    NodeVisitor was vastly more complicated than necessary.
    
    This patch improve performance on these new gc benchmarks:
    
    gc-forest: 1.14% better
    gc-mini-tree: 5.09% better
    gc-tree: 4.60% better
    
    * bindings/v8/V8GCController.cpp:
    (WebCore::ObjectVisitor::visitDOMWrapper):
    (WebCore::addImplicitReferencesForNodeWithEventListeners):
    (WebCore::rootForGC):
    (WebCore::NodeVisitor::visitDOMWrapper):
    (WebCore::NodeVisitor::applyGrouping):
    (NodeVisitor):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@132114 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    abarth@webkit.org authored

Oct 17, 2012

  1. Rename PerfTestRunner.runPerSecond to PerfTestRunner.measureRunsPerSe…

    …cond 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:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@131651 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    rniwa@webkit.org authored

Sep 26, 2012

  1. 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:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129669 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    rniwa@webkit.org authored

Aug 02, 2012

  1. TypedArray set method is slow when called with another typed array

    https://bugs.webkit.org/show_bug.cgi?id=92556
    
    Patch by Arnaud Renevier <a.renevier@sisa.samsung.com> on 2012-08-02
    Reviewed by Kenneth Russell.
    
    PerformanceTests:
    
    * Bindings/typed-array-set-from-typed.html: Added.
    
    Source/WebCore:
    
    When setting multiples values to a typed array from an array like
    element, try to determine if the argument is a typed array. If so,
    cast the argument to a typed array, and read each element with .item()
    method. That avoid reading the value as a JSValue, and speedups set
    method by approximatively 10x.
    
    Introduce setWebGLArrayWithTypedArrayArgument template function which
    checks if argument is a typed array. If so, it copies the data to
    target typed array and returns true. Otherwise, it returns false.
    
    Introduce copyTypedArrayBuffer template function which copies data
    from a typed array to another one. This function is also used from
    constructArrayBufferViewWithTypedArrayArgument.
    
    * bindings/js/JSArrayBufferViewHelper.h:
    (WebCore):
    (WebCore::copyTypedArrayBuffer):
    (WebCore::setWebGLArrayWithTypedArrayArgument):
    (WebCore::setWebGLArrayHelper):
    (WebCore::constructArrayBufferViewWithTypedArrayArgument):
    * bindings/js/JSFloat32ArrayCustom.cpp:
    (WebCore::JSFloat32Array::set):
    * bindings/js/JSFloat64ArrayCustom.cpp:
    (WebCore::JSFloat64Array::set):
    * bindings/js/JSInt16ArrayCustom.cpp:
    (WebCore::JSInt16Array::set):
    * bindings/js/JSInt32ArrayCustom.cpp:
    (WebCore::JSInt32Array::set):
    * bindings/js/JSInt8ArrayCustom.cpp:
    (WebCore::JSInt8Array::set):
    * bindings/js/JSUint16ArrayCustom.cpp:
    (WebCore::JSUint16Array::set):
    * bindings/js/JSUint32ArrayCustom.cpp:
    (WebCore::JSUint32Array::set):
    * bindings/js/JSUint8ArrayCustom.cpp:
    (WebCore::JSUint8Array::set):
    * bindings/js/JSUint8ClampedArrayCustom.cpp:
    (WebCore::JSUint8ClampedArray::set):
    
    Source/WTF:
    
    Add an checkInboundData function to TypedArrayBase to check if a
    position will be not be out of bound or overflow from the typed array.
    
    * wtf/TypedArrayBase.h:
    (WTF::TypedArrayBase::checkInboundData):
    (TypedArrayBase):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@124483 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    commit-queue@webkit.org authored

Jul 27, 2012

  1. use createUninitialized when creating TypedArray from another array

    https://bugs.webkit.org/show_bug.cgi?id=92518
    
    Patch by Arnaud Renevier <a.renevier@sisa.samsung.com> on 2012-07-27
    Reviewed by Kenneth Russell.
    
    PerformanceTests:
    
    * Bindings/typed-array-construct-from-array.html: Added.
    
    Source/WebCore:
    
    When creating a Typed Array from another array, we fill it with values
    from the source array. So, we can create it uninitialized. This is
    make constructor about 35% faster when constructed with another typed
    array.
    
    Test: fast/canvas/webgl/array-constructor.html
    
    * bindings/js/JSArrayBufferViewHelper.h:
    (WebCore::constructArrayBufferViewWithTypedArrayArgument):
    (WebCore::constructArrayBufferView):
    
    Source/WTF:
    
    Expose a createUninitialized static method on TypedArray classes.
    
    * wtf/Float32Array.h:
    (Float32Array):
    (WTF::Float32Array::createUninitialized):
    (WTF):
    * wtf/Float64Array.h:
    (Float64Array):
    (WTF::Float64Array::createUninitialized):
    (WTF):
    * wtf/Int16Array.h:
    (Int16Array):
    (WTF::Int16Array::createUninitialized):
    (WTF):
    * wtf/Int32Array.h:
    (Int32Array):
    (WTF::Int32Array::createUninitialized):
    (WTF):
    * wtf/Int8Array.h:
    (Int8Array):
    (WTF::Int8Array::createUninitialized):
    (WTF):
    * wtf/Uint16Array.h:
    (Uint16Array):
    (WTF::Uint16Array::createUninitialized):
    (WTF):
    * wtf/Uint32Array.h:
    (Uint32Array):
    (WTF::Uint32Array::createUninitialized):
    (WTF):
    * wtf/Uint8Array.h:
    (Uint8Array):
    (WTF::Uint8Array::createUninitialized):
    (WTF):
    * wtf/Uint8ClampedArray.h:
    (Uint8ClampedArray):
    
    LayoutTests:
    
    Add test to check that constructing a Typed Array with nan values does
    not result in random values.
    
    * fast/canvas/webgl/array-constructor-expected.txt: Added.
    * fast/canvas/webgl/array-constructor.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123935 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    commit-queue@webkit.org authored
  2. constructing TypedArray from another TypedArray is slow

    https://bugs.webkit.org/show_bug.cgi?id=90838
    
    Patch by Arnaud Renevier <a.renevier@sisa.samsung.com> on 2012-07-26
    Reviewed by Kenneth Russell.
    
    PerformanceTests:
    
    * Bindings/typed-array-construct-from-same-type.html: Added.
    * Bindings/typed-array-construct-from-typed.html: Added.
    
    Source/WebCore:
    
    When constructing a typed array from an array like element, try to
    determine if the argument is a typed array. If so, cast the argument
    to a typed array, and read each element with .item() method. That
    avoid reading the value as a JSValue, and speedups construction by
    approximatively 3x (even 30x if TypedArrays are both the same type).
    
    In order to achieve that, we use virtual getType method. We can use
    this information to cast the TypedArray to the actual type, and then
    read the values from the source.
    
    Introduce constructArrayBufferViewWithTypedArrayArgument template
    function which returns a new typed array if first argument is a typed
    array, or 0 otherwise.
    
    This patch also replaces previous is<Type>Array() calls with new
    getType method.
    
    * bindings/js/JSArrayBufferViewHelper.h:
    (WebCore::constructArrayBufferViewWithTypedArrayArgument):
    (WebCore):
    (WebCore::constructArrayBufferView):
    * bindings/v8/SerializedScriptValue.cpp:
    * html/canvas/DataView.h:
    (DataView):
    (WebCore::DataView::getType):
    * html/canvas/WebGLRenderingContext.cpp:
    (WebCore):
    (WebCore::WebGLRenderingContext::readPixels):
    (WebCore::WebGLRenderingContext::validateTexFuncData):
    * page/Crypto.cpp:
    
    Source/WTF:
    
    Introduce virtual method getType on ArrayBufferView. It returns the actual
    type of the view. This method replaces previous is<Type>Array() methods.
    
    * wtf/ArrayBufferView.h:
    * wtf/Float32Array.h:
    (WTF::Float32Array::getType):
    (Float32Array):
    * wtf/Float64Array.h:
    (WTF::Float64Array::getType):
    (Float64Array):
    * wtf/Int16Array.h:
    (WTF::Int16Array::getType):
    (Int16Array):
    * wtf/Int32Array.h:
    (WTF::Int32Array::getType):
    (Int32Array):
    * wtf/Int8Array.h:
    (WTF::Int8Array::getType):
    (Int8Array):
    * wtf/IntegralTypedArrayBase.h:
    * wtf/TypedArrayBase.h:
    (TypedArrayBase):
    (WTF::TypedArrayBase::item):
    * wtf/Uint16Array.h:
    (WTF::Uint16Array::getType):
    (Uint16Array):
    * wtf/Uint32Array.h:
    (WTF::Uint32Array::getType):
    (Uint32Array):
    * wtf/Uint8Array.h:
    (WTF::Uint8Array::getType):
    (Uint8Array):
    * wtf/Uint8ClampedArray.h:
    (WTF::Uint8ClampedArray::getType):
    (Uint8ClampedArray):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123819 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    commit-queue@webkit.org authored

May 18, 2012

  1. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117614 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  2. [perf-test] Add a binding benchmark for getElementById() for an undef…

    …ined 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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117569 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  3. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117568 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  4. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117563 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  5. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117553 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  6. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117550 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  7. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117548 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  8. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117547 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored

May 17, 2012

  1. [perf-test] Add a micro benchmark for div.firstChild getter for an un…

    …defined 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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117503 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  2. [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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117430 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored

Mar 07, 2012

  1. [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:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@110009 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored

Feb 27, 2012

  1. [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:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108942 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored

Feb 24, 2012

  1. Rename dom*_*attributes.html to dom*-*attributes.html to follow the W…

    …ebKit convention.
    
    * Bindings/dom-attributes.html: Copied from PerformanceTests/Bindings/dom_attributes.html.
    * Bindings/dom_attributes.html: Removed.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    rniwa@webkit.org authored
  2. 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.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108782 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored
  3. Add performance tests for DOM attribute getters and setters

    https://bugs.webkit.org/show_bug.cgi?id=79208
    
    Reviewed by Ryosuke Niwa.
    
    PerformanceTests:
    
    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):
    
    Tools:
    
    We want to allow perf tests to output info messages
    that do not affect the test results. To accomplish this,
    this patch modifies perftestsrunner.py so that it ignores
    a line that starts from "Info:".
    
    * Scripts/webkitpy/performance_tests/perftestsrunner.py:
    (PerfTestsRunner):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108748 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored

Feb 22, 2012

  1. 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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108477 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    haraken@chromium.org authored

Feb 01, 2012

  1. Fix after r106386. The empty anchor element was generating an erroneo…

    …us whitespace.
    
    * Bindings/event-target-wrapper.html:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106450 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    rniwa@webkit.org authored

Jan 31, 2012

  1. 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):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106386 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    rniwa@webkit.org authored
  2. 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):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106379 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    rniwa@webkit.org authored

Jan 19, 2012

  1. 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.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105456 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    abarth@webkit.org authored
  2. 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.
    
    PerformanceTests: 
    
    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):
    
    Tools: 
    
    Always pass --no-timeout to DumpRenderTree from run-perf-tests.
    Otherwise some tests such as Parser/xml-parser.html will timeout.
    
    --no-timeout option is currently supported by Chromium and Mac ports.
    
    * Scripts/webkitpy/layout_tests/port/base.py:
    (Port.to.create_driver):
    * Scripts/webkitpy/layout_tests/port/chromium.py:
    (ChromiumDriver.__init__):
    (ChromiumDriver._wrapper_options):
    * Scripts/webkitpy/layout_tests/port/driver.py:
    (Driver.__init__):
    (DriverProxy.__init__):
    * Scripts/webkitpy/layout_tests/port/webkit.py:
    (WebKitDriver.__init__):
    (WebKitDriver.cmd_line):
    * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
    (WebKitDriverTest.test_read_binary_block):
    (WebKitDriverTest):
    (WebKitDriverTest.test_no_timeout):
    * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
    (get_tests_run.RecordingTestDriver.__init__):
    * Scripts/webkitpy/performance_tests/perftestsrunner.py:
    (PerfTestsRunner._parse_args):
    (PerfTestsRunner._run_tests_set):
    * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
    (create_runner):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105443 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    rniwa@webkit.org authored

Oct 25, 2011

  1. EventTargetFactory.in is not sorted

    https://bugs.webkit.org/show_bug.cgi?id=70855
    
    Reviewed by Eric Seidel.
    
    PerformanceTests:
    
    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.
    
    Source/WebCore:
    
    This patch sorts the file.  I was not able to measure a performance
    difference using the microbenchmark included with this patch.
    
    * dom/EventTargetFactory.in:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@98412 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    abarth@webkit.org authored
Something went wrong with that request. Please try again.