<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>47316</bug_id>
          
          <creation_ts>2010-10-06 17:59:49 -0700</creation_ts>
          <short_desc>HTML parser should use lazyAttach</short_desc>
          <delta_ts>2023-04-01 00:36:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>annevk</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>psolanki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290731</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 17:59:49 -0700</bug_when>
    <thetext>HTML parser should use lazyAttach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290732</commentid>
    <comment_count>1</comment_count>
      <attachid>70020</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 18:00:11 -0700</bug_when>
    <thetext>Created attachment 70020
experiment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290737</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 18:11:02 -0700</bug_when>
    <thetext>Initial testing shows this as a loss:

== before ==

Running 20 times
Ignoring warm-up run (3278)
2729
2737
2722
2710
2745
2734
2725
2731
2749
2737
2735
2770
2754
2743
2747
2773
2762
2751
2771
2780

avg 2745.25
stdev 18.2944663764757

== after ==


Running 20 times
Ignoring warm-up run (3087)
2805
2810
2807
2801
2817
2830
2826
2812
2821
2846
2838
2828
2829
2862
2856
2845
2844
2848
2875
2864

avg 2833.2
stdev 20.894018282752604

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293533</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-13 11:05:10 -0700</bug_when>
    <thetext>I suspect our lazyAttach logic needs to be made more efficient before we use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293535</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-13 11:05:53 -0700</bug_when>
    <thetext>I suspect our lazyAttach logic needs to be made more efficient before we use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336343</commentid>
    <comment_count>5</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-01-18 22:30:54 -0800</bug_when>
    <thetext>I don&apos;t see a perf loss with this patch anymore, maybe even a slight win (?). On my quad-core iMac, I see

== before ==

Running 20 times
Ignoring warm-up run (802)
799
822
823
804
802
801
802
808
805
804
804
805
808
806
812
805
809
809
811
809

avg 807.4
median 805.5
stdev 6.011655346075654
min 799
max 823

== after ==

Running 20 times
Ignoring warm-up run (811)
815
817
801
800
794
801
797
796
799
796
798
801
798
802
803
801
802
811
803
803

avg 801.9
median 801
stdev 5.864298764558298
min 794
max 817</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411734</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 17:21:38 -0700</bug_when>
    <thetext>This is more Eric&apos;s department than mine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411843</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-28 07:42:59 -0700</bug_when>
    <thetext>lazyAttach will show as profitable only on some cases, right? It&apos;s useful when there are lots of attach-inducing changes in a given bit of time, and lazyAttach helps batching up these changes. So the maximum win will be in large chunk of script, which sparsely makes changes to DOM -- the lazyAttach saves you multiple re-traversals of the tree.

In the case of parser, you already do the batching, since _all_ of the parser DOM modifications are attachment-related. So I don&apos;t think the parser will ever see a significant win in lazyAttach.

However, we should still make this change in an effort to get rid of non-lazy attach().

http://www.youtube.com/watch?v=kq4SqgxIKM0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1945925</commentid>
    <comment_count>8</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2023-04-01 00:36:15 -0700</bug_when>
    <thetext>The code here has changed too much to consider this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70020</attachid>
            <date>2010-10-06 18:00:11 -0700</date>
            <delta_ts>2010-10-06 18:00:11 -0700</delta_ts>
            <desc>experiment</desc>
            <filename>bug-47316-20101006180010.patch</filename>
            <type>text/plain</type>
            <size>2575</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTI2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVE1M
IHBhcnNlciBzaG91bGQgdXNlIGxhenlBdHRhY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MzE2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09Q
UyEpCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0YWNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjphdHRhY2hBdFNpdGUpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OmNhbGxUaGVBZG9wdGlvbkFnZW5jeSk6CisKIDIwMTAtMTAtMDYgIEtpbnVr
byBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHRy
eWluZyB0byBmaXggY2hyb21pdW0gV2luZG93cyBidWlsZC4KSW5kZXg6IFdlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCShyZXZpc2lvbiA2OTI1MykKKysrIFdl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgsNyArMTA4LDcgQEAgUGFzc1JlZlB0cjxDaGlsZFR5cGU+IEhUTUxDb25zdHJ1Y3Rp
b25TaQogICAgIC8vIGZvciBlbGVtZW50cyksIGhvd2V2ZXIsIHdlJ2xsIGdldCB0byB1c2UgdGhp
cyByZWYgaW4gdGhlIHN0YWNrIG9mCiAgICAgLy8gb3BlbiBlbGVtZW50cy4KICAgICBpZiAocGFy
ZW50LT5hdHRhY2hlZCgpICYmICFjaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAgICAgY2hpbGQtPmF0
dGFjaCgpOworICAgICAgICBjaGlsZC0+bGF6eUF0dGFjaCgpOwogICAgIHJldHVybiBjaGlsZC5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjphdHRhY2hBdFNpdGUoCiAgICAgLy8gSmF2YVNjcmlwdCBydW4gZnJvbSBiZWZvcmVsb2Fk
IChvciBET00gTXV0YXRpb24gb3IgZXZlbnQgaGFuZGxlcnMpCiAgICAgLy8gbWlnaHQgaGF2ZSBy
ZW1vdmVkIHRoZSBjaGlsZCwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgbm90IGF0dGFjaCBpdC4K
ICAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUoKSAmJiBzaXRlLnBhcmVudC0+YXR0YWNoZWQoKSAm
JiAhY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgIGNoaWxkLT5hdHRhY2goKTsKKyAgICAgICAg
Y2hpbGQtPmxhenlBdHRhY2goKTsKIH0KIAogSFRNTENvbnN0cnVjdGlvblNpdGU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlKERvY3VtZW50KiBkb2N1bWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNz
aW9uIHNjcmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgaXNQYXJzaW5nRnJhZ21lbnQpCkluZGV4OiBX
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiA2OTI1MykKKysr
IFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY2OSw3ICsxNjY5LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNhbGxUaGVBZG9wdGlv
bkFnZQogICAgICAgICBpZiAoZnVydGhlc3RCbG9ja0VsZW1lbnQtPmF0dGFjaGVkKCkgJiYgIW5l
d0VsZW1lbnQtPmF0dGFjaGVkKCkpIHsKICAgICAgICAgICAgIC8vIE5vdGljZSB0aGF0IG5ld0Vs
ZW1lbnQgbWlnaHQgYWxyZWFkeSBiZSBhdHRhY2hlZCBpZiwgZm9yIGV4YW1wbGUsIG9uZSBvZiB0
aGUgcmVwYXJlbnRlZAogICAgICAgICAgICAgLy8gY2hpbGRyZW4gaXMgYSBzdHlsZSBlbGVtZW50
LCB3aGljaCBhdHRhY2hlcyBpdHNlbGYgYXV0b21hdGljYWxseS4KLSAgICAgICAgICAgIG5ld0Vs
ZW1lbnQtPmF0dGFjaCgpOworICAgICAgICAgICAgbmV3RWxlbWVudC0+bGF6eUF0dGFjaCgpOwog
ICAgICAgICB9CiAgICAgICAgIC8vIDExCiAgICAgICAgIG1fdHJlZS5hY3RpdmVGb3JtYXR0aW5n
RWxlbWVudHMoKS0+c3dhcFRvKGZvcm1hdHRpbmdFbGVtZW50LCBuZXdFbGVtZW50LmdldCgpLCBi
b29rbWFyayk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>