<?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>50517</bug_id>
          
          <creation_ts>2010-12-04 06:08:50 -0800</creation_ts>
          <short_desc>Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal</short_desc>
          <delta_ts>2010-12-31 04:43:55 -0800</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>FIXED</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>
          <dependson>51612</dependson>
          <blocked>43085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>317263</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-04 06:08:50 -0800</bug_when>
    <thetext>Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317264</commentid>
    <comment_count>1</comment_count>
      <attachid>75607</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-04 06:10:36 -0800</bug_when>
    <thetext>Created attachment 75607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320781</commentid>
    <comment_count>2</comment_count>
      <attachid>75607</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-12 02:33:51 -0800</bug_when>
    <thetext>Comment on attachment 75607
Patch

Again, on what benchmark?  So much code for unclear gains.  Please document your measurement techniques in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321187</commentid>
    <comment_count>3</comment_count>
      <attachid>75607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-13 10:06:47 -0800</bug_when>
    <thetext>Comment on attachment 75607
Patch

Again, I don’t quite see eye to eye with Eric on this. This optimization looks like a good idea and is not a lot more code.

But I’d like to understand more what this makes faster. What platform? What test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321290</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-13 11:38:33 -0800</bug_when>
    <thetext>I&apos;m also not sure Darin and I disagree here either. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323090</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-16 03:05:29 -0800</bug_when>
    <thetext>Same as in https://bugs.webkit.org/show_bug.cgi?id=50516#c9 (and sorry for the delay):

                     avg        median    stdev
 
OS X 10.6 original   &gt;4000      &gt;4000     ;-)
r74063               2185.72    2182      12.126895728091345
r74063 with patch    2127.83    2118.5    75.47424130125455
                     -2.65%     -2,91%


Maybe someone else can confirm the speed increase? I&apos;m not sure if this (and the change in bug 50516 - both) cause such a &quot;huge&quot; performance win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323295</commentid>
    <comment_count>6</comment_count>
      <attachid>75607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-16 11:06:31 -0800</bug_when>
    <thetext>Comment on attachment 75607
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=75607&amp;action=review

I think it’s OK to land this patch. I’m going to change the review to review+. Eric, please do let me know if you object. I am not trying to override you.

&gt; JavaScriptCore/wtf/text/AtomicString.cpp:235
&gt; +            return equalUTF16WithUTF8(string-&gt;characters(), string-&gt;characters() + string-&gt;length(), buffer.characters, buffer.characters + buffer.length);

We have stringCharacters in a local variable, and should use it instead of string-&gt;characters().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323401</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-16 13:57:15 -0800</bug_when>
    <thetext>I would like Patrick to update the ChangeLog to explain his testing, and ideally add the benchmark to our repository under WebCore/benchmarks.

Without clear (repeatable) testing, optimizing like this makes little sense to me. :)

Thank you for reviewing Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324846</commentid>
    <comment_count>8</comment_count>
      <attachid>75607</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-20 23:04:24 -0800</bug_when>
    <thetext>Comment on attachment 75607
Patch

Eh.  Looking at this patch again, it looks clearly right.  Still would be good to know what perf testing is being done here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326932</commentid>
    <comment_count>9</comment_count>
      <attachid>77465</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-26 15:31:30 -0800</bug_when>
    <thetext>Created attachment 77465
Patch

I&apos;ll cq+ this, when the xml parser benchmark is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328154</commentid>
    <comment_count>10</comment_count>
      <attachid>77465</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-31 04:43:48 -0800</bug_when>
    <thetext>Comment on attachment 77465
Patch

Clearing flags on attachment: 77465

Committed r74829: &lt;http://trac.webkit.org/changeset/74829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328156</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-31 04:43:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75607</attachid>
            <date>2010-12-04 06:10:36 -0800</date>
            <delta_ts>2010-12-26 15:31:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50517-20101204151034.patch</filename>
            <type>text/plain</type>
            <size>2060</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlZTJhYTk5MDYyYWU2NTFhNTFjMzU1NDhlZGJmYWFjNDE5ZWI4ZGM0Li5i
MDUyZTA5NjUwMTYzMjFmOTBiNGUzY2Q2MmZkYTg3MTFhNmVlMjllIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTAtMTItMDQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgZmFzdCBjYXNlIGZvciBBU0NJSSBzdHJpbmdzIGluIEhhc2hBbmRVVEY4Q2hhcmFjdGVy
c1RyYW5zbGF0b3I6OmVxdWFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDUxNworCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoK
KyAgICAgICAgKFdURjo6SGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvcjo6ZXF1YWwpOgor
CiAyMDEwLTEyLTAzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
IAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGFjYmNkMzRkMDBjMjI3MmY0ZmVhY2MyODdk
OTQ1MGE1N2VjY2VlZWQuLjYxNDg3Y2Y2N2UwNGUzN2RiZGZjZGI0OTU3Njc5OGZlZDY0ZGE3MWIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtMjI1LDcgKzIy
NSwyMiBAQCBzdHJ1Y3QgSGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvciB7CiAKICAgICBz
dGF0aWMgYm9vbCBlcXVhbChTdHJpbmdJbXBsKiBjb25zdCYgc3RyaW5nLCBjb25zdCBIYXNoQW5k
VVRGOENoYXJhY3RlcnMmIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBlcXVhbFVURjE2
V2l0aFVURjgoc3RyaW5nLT5jaGFyYWN0ZXJzKCksIHN0cmluZy0+Y2hhcmFjdGVycygpICsgc3Ry
aW5nLT5sZW5ndGgoKSwgYnVmZmVyLmNoYXJhY3RlcnMsIGJ1ZmZlci5jaGFyYWN0ZXJzICsgYnVm
ZmVyLmxlbmd0aCk7CisgICAgICAgIGlmIChidWZmZXIudXRmMTZMZW5ndGggIT0gc3RyaW5nLT5s
ZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBVQ2hh
ciogc3RyaW5nQ2hhcmFjdGVycyA9IHN0cmluZy0+Y2hhcmFjdGVycygpOworCisgICAgICAgIC8v
IElmIGJ1ZmZlciBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMgVVRGLTggYW5kIFVURjE2
IGxlbmd0aCBhcmUgdGhlIHNhbWUuCisgICAgICAgIGlmIChidWZmZXIudXRmMTZMZW5ndGggIT0g
YnVmZmVyLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbFVURjE2V2l0aFVURjgoc3Ry
aW5nLT5jaGFyYWN0ZXJzKCksIHN0cmluZy0+Y2hhcmFjdGVycygpICsgc3RyaW5nLT5sZW5ndGgo
KSwgYnVmZmVyLmNoYXJhY3RlcnMsIGJ1ZmZlci5jaGFyYWN0ZXJzICsgYnVmZmVyLmxlbmd0aCk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgQVNTRVJUKGlzQVNDSUkoYnVmZmVyLmNoYXJhY3RlcnNbaV0pKTsKKyAg
ICAgICAgICAgIGlmIChzdHJpbmdDaGFyYWN0ZXJzW2ldICE9IGJ1ZmZlci5jaGFyYWN0ZXJzW2ld
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdHJpbmdJbXBs
KiYgbG9jYXRpb24sIGNvbnN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVycyYgYnVmZmVyLCB1bnNpZ25l
ZCBoYXNoKQo=
</data>
<flag name="review"
          id="66437"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77465</attachid>
            <date>2010-12-26 15:31:30 -0800</date>
            <delta_ts>2010-12-31 04:43:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50517.patch</filename>
            <type>text/plain</type>
            <size>1982</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlM2RkZWIxLi45MGYwOGIxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTAtMTItMjYgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGEgZmFzdCBj
YXNlIGZvciBBU0NJSSBzdHJpbmdzIGluIEhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I6
OmVxdWFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDUxNworCisgICAgICAgIFRoaXMgY2hhbmdlIHNob3dzIGFib3V0IDIlIHBlcmZvcm1hbmNlIHdp
biBvbiB0aGUgeG1sLXBhcnNlciBiZW5jaG1hcmsuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xh
dG9yOjplcXVhbCk6CisKIDIwMTAtMTItMjYgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggYWNiY2QzNC4uOTNhZDIxZCAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC0yMjUsNyArMjI1LDIyIEBAIHN0cnVj
dCBIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yIHsKIAogICAgIHN0YXRpYyBib29sIGVx
dWFsKFN0cmluZ0ltcGwqIGNvbnN0JiBzdHJpbmcsIGNvbnN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVy
cyYgYnVmZmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVxdWFsVVRGMTZXaXRoVVRGOChzdHJp
bmctPmNoYXJhY3RlcnMoKSwgc3RyaW5nLT5jaGFyYWN0ZXJzKCkgKyBzdHJpbmctPmxlbmd0aCgp
LCBidWZmZXIuY2hhcmFjdGVycywgYnVmZmVyLmNoYXJhY3RlcnMgKyBidWZmZXIubGVuZ3RoKTsK
KyAgICAgICAgaWYgKGJ1ZmZlci51dGYxNkxlbmd0aCAhPSBzdHJpbmctPmxlbmd0aCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IFVDaGFyKiBzdHJpbmdDaGFy
YWN0ZXJzID0gc3RyaW5nLT5jaGFyYWN0ZXJzKCk7CisKKyAgICAgICAgLy8gSWYgYnVmZmVyIGNv
bnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycyBVVEYtOCBhbmQgVVRGMTYgbGVuZ3RoIGFyZSB0
aGUgc2FtZS4KKyAgICAgICAgaWYgKGJ1ZmZlci51dGYxNkxlbmd0aCAhPSBidWZmZXIubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsVVRGMTZXaXRoVVRGOChzdHJpbmdDaGFyYWN0ZXJz
LCBzdHJpbmdDaGFyYWN0ZXJzICsgc3RyaW5nLT5sZW5ndGgoKSwgYnVmZmVyLmNoYXJhY3RlcnMs
IGJ1ZmZlci5jaGFyYWN0ZXJzICsgYnVmZmVyLmxlbmd0aCk7CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgQVNTRVJU
KGlzQVNDSUkoYnVmZmVyLmNoYXJhY3RlcnNbaV0pKTsKKyAgICAgICAgICAgIGlmIChzdHJpbmdD
aGFyYWN0ZXJzW2ldICE9IGJ1ZmZlci5jaGFyYWN0ZXJzW2ldKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdHJpbmdJbXBsKiYgbG9jYXRpb24sIGNvbnN0IEhh
c2hBbmRVVEY4Q2hhcmFjdGVycyYgYnVmZmVyLCB1bnNpZ25lZCBoYXNoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>