<?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>100514</bug_id>
          
          <creation_ts>2012-10-26 06:38:24 -0700</creation_ts>
          <short_desc>Lots of time spent under DNSResolveQueue::platformProxyIsEnabledInSystemPreferences</short_desc>
          <delta_ts>2012-10-26 13:40:59 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>751975</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-26 06:38:24 -0700</bug_when>
    <thetext>DNSResolveQueue::platformProxyIsEnabledInSystemPreferences gets called for every link in the document. We should cache the result as the function is relatively slow and the result changes rarely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752076</commentid>
    <comment_count>1</comment_count>
      <attachid>170934</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-26 08:33:19 -0700</bug_when>
    <thetext>Created attachment 170934
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752088</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-26 08:49:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/132664</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752090</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-26 08:50:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/12376314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752105</commentid>
    <comment_count>4</comment_count>
      <attachid>170934</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-26 09:06:08 -0700</bug_when>
    <thetext>Comment on attachment 170934
patch

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

Nice!

&gt; Source/WebCore/ChangeLog:9
&gt; +        DNSResolveQueue::platformProxyIsEnabledInSystemPreferences gets called for every link in
&gt; +        the document. The function is relatively slow.

This is not quite accurate, but close enough in effect. It happens (1) if the queue is empty, which should not affect performance, and (2) when firing the timer, which can indeed.

&gt; Source/WebCore/ChangeLog:18
&gt; +            Add constructor. Also fixes a bug, m_requestsInFlight was not initialized.

This is a regression from &lt;http://trac.webkit.org/changeset/112396&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752109</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-26 09:07:24 -0700</bug_when>
    <thetext>&gt; It happens (1) if the queue is empty, which should not affect performance, and (2) when firing the timer, which can indeed.

Hmm, I&apos;m now seeing that my expectation was not correct. Strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752131</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-26 09:27:13 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This is not quite accurate, but close enough in effect. It happens (1) if the queue is empty, which should not affect performance, and (2) when firing the timer, which can indeed.

It was ~2% of the trace of a run over popular web sites. That&apos;s huge for a single function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752133</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-26 09:30:22 -0700</bug_when>
    <thetext>If the proxy is enabled (in the test case it is) the function gets invoked for every link separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752340</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-26 13:40:59 -0700</bug_when>
    <thetext>D&apos;oh.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170934</attachid>
            <date>2012-10-26 08:33:19 -0700</date>
            <delta_ts>2012-10-26 09:06:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>dns-prefetch-enable.patch</filename>
            <type>text/plain</type>
            <size>4169</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjY0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEwLTI2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBMb3RzIG9mIHRpbWUgc3BlbnQg
dW5kZXIgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVm
ZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAwNTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNl
cyBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgbGluayBpbgorICAgICAgICB0aGUgZG9jdW1lbnQuIFRo
ZSBmdW5jdGlvbiBpcyByZWxhdGl2ZWx5IHNsb3cuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNhY2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGNoZWNrIGZvciA1IHNlY29uZHMuIEJh
c2VkIG9uIGNvZGUgY29tbWVudHMKKyAgICAgICAgcHJlZmV0Y2hpbmcgaXMgZGlzYWJsZWQgd2l0
aCBwcm94aWVzIGR1ZSB0byByZWdyZXNzaW5nIHBlcmZvcm1hbmNlIHdpdGggc29tZSBjb25maWd1
cmF0aW9ucy4KKyAgICAgICAgUHJveHkgc3RhdHVzIGNoYW5nZXMgcmFyZWx5IGFuZCBhIHNsaWdo
dCByZWFjdGlvbiBkZWxheSBzaG91ZG4ndCBjYXVzZSBwcmFjdGljYWwgcHJvYmxlbXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OkROU1Jlc29sdmVRdWV1ZSk6CisgICAgICAgIAorICAg
ICAgICAgICAgQWRkIGNvbnN0cnVjdG9yLiBBbHNvIGZpeGVzIGEgYnVnLCBtX3JlcXVlc3RzSW5G
bGlnaHQgd2FzIG5vdCBpbml0aWFsaXplZC4KKyAgICAgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmlzVXNpbmdQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpETlNSZXNvbHZlUXVldWU6OmZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5oOgorICAgICAgICAoRE5TUmVzb2x2ZVF1ZXVlKToKKwogMjAxMi0xMC0y
NSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEJyaW5nIGRldmljZSBnZW9sb2NhdGlvbiBhbmQgb3JpZW50YXRpb24gZW11
bGF0aW9uIGZyb20gYmVoaW5kIHRoZSBleHBlcmltZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCShyZXZpc2lvbiAx
MzI1MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKIAorI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBp
cyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3
aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zlcmlu
ZykuCkBAIC00NywxMyArNDksMzAgQEAgc3RhdGljIGNvbnN0IGludCBnTWF4UmVxdWVzdHNUb1F1
ZXVlID0gNgogLy8gSWYgdGhlcmUgd2VyZSBxdWV1ZWQgbmFtZXMgdGhhdCBjb3VsZG4ndCBiZSBz
ZW50IHNpbXVsdGFuZW91c2x5LCBjaGVjayB0aGUgc3RhdGUgb2YgcmVzb2x2ZXJzIGFmdGVyIHRo
aXMgZGVsYXkuCiBzdGF0aWMgY29uc3QgZG91YmxlIGdSZXRyeVJlc29sdmluZ0luU2Vjb25kcyA9
IDAuMTsKIAorRE5TUmVzb2x2ZVF1ZXVlOjpETlNSZXNvbHZlUXVldWUoKQorICAgIDogbV9yZXF1
ZXN0c0luRmxpZ2h0KDApCisgICAgLCBtX2NhY2hlZFByb3h5RW5hYmxlZFN0YXR1cyhmYWxzZSkK
KyAgICAsIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZSgwKQoreworfQorCitib29s
IEROU1Jlc29sdmVRdWV1ZTo6aXNVc2luZ1Byb3h5KCkKK3sKKyAgICBkb3VibGUgdGltZSA9IGN1
cnJlbnRUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtUHJveHlDaGVja0Rl
bGF5ID0gNTsKKyAgICBpZiAodGltZSAtIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGlt
ZSA+IG1pbmltdW1Qcm94eUNoZWNrRGVsYXkpIHsKKyAgICAgICAgbV9sYXN0UHJveHlFbmFibGVk
U3RhdHVzQ2hlY2tUaW1lID0gdGltZTsKKyAgICAgICAgbV9jYWNoZWRQcm94eUVuYWJsZWRTdGF0
dXMgPSBwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpOworICAgIH0K
KyAgICByZXR1cm4gbV9jYWNoZWRQcm94eUVuYWJsZWRTdGF0dXM7Cit9CisKIHZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjphZGQoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICAvLyBJZiB0aGVy
ZSBhcmUgbm8gbmFtZXMgcXVldWVkLCBhbmQgZmV3IGVub3VnaCBhcmUgaW4gZmxpZ2h0LCByZXNv
bHZlIGltbWVkaWF0ZWx5ICh0aGUgbW91c2UgbWF5IGJlIG92ZXIgYSBsaW5rKS4KICAgICBpZiAo
IW1fbmFtZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlmIChwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5T
eXN0ZW1QcmVmZXJlbmNlcygpKQorICAgICAgICBpZiAoaXNVc2luZ1Byb3h5KCkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0KICAgICAgICAgaWYgKGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0lu
RmxpZ2h0KSA8PSBnTmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSkgewogICAgICAgICAgICAgcGxh
dGZvcm1SZXNvbHZlKGhvc3RuYW1lKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcyLDcgKzkx
LDcgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OmFkZChjb25zdCBTdHJpbmcmIAogCiB2b2lkIERO
U1Jlc29sdmVRdWV1ZTo6ZmlyZWQoKQogewotICAgIGlmIChwbGF0Zm9ybVByb3h5SXNFbmFibGVk
SW5TeXN0ZW1QcmVmZXJlbmNlcygpKSB7CisgICAgaWYgKGlzVXNpbmdQcm94eSgpKSB7CiAgICAg
ICAgIG1fbmFtZXMuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAkocmV2
aXNpb24gMTMyNTMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMTAgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKKyAgICBETlNSZXNvbHZlUXVldWUoKTsKKworICAgIGJvb2wgaXNVc2lu
Z1Byb3h5KCk7CisKICAgICBib29sIHBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZl
cmVuY2VzKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJik7CiAKQEAg
LTU3LDYgKzYxLDggQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX25hbWVzOwog
ICAgIGludCBtX3JlcXVlc3RzSW5GbGlnaHQ7CisgICAgYm9vbCBtX2NhY2hlZFByb3h5RW5hYmxl
ZFN0YXR1czsKKyAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOwog
fTsKIAogfQo=
</data>
<flag name="review"
          id="184703"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>