<?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>177597</bug_id>
          
          <creation_ts>2017-09-28 01:34:59 -0700</creation_ts>
          <short_desc>Speedometer 2.0: Listen for changes to individual attributes in Backbone suite</short_desc>
          <delta_ts>2017-09-28 18:10:46 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>167652</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shiyu Zhang">shiyu.zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>addyo</cc>
    
    <cc>lforschler</cc>
    
    <cc>mathias</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354062</commentid>
    <comment_count>0</comment_count>
      <attachid>322072</attachid>
    <who name="Shiyu Zhang">shiyu.zhang</who>
    <bug_when>2017-09-28 01:34:59 -0700</bug_when>
    <thetext>Created attachment 322072
Patch for backbone model change binding

Backbone implementation used to trigger render function twice if a new item is created as reported in https://github.com/tastejs/todomvc/issues/469. A workaround is to filter out the render invocation caused by &apos;id&apos; change as https://github.com/tastejs/todomvc/pull/755 did.

I think there is a more decent way to fix this issure by binding listeners to specific attributes change of the model. In this way, we only listen to the model attributes that we really care and ignore the &apos;id&apos; change. It&apos;s also more efficient to write specific listeners for different model attributes (&apos;completed&apos; and &apos;title&apos;) change instead of re-rendering the whole todo item once the mode changes. The performance of backbone suite improved 8% after applying this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354394</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-28 18:10:46 -0700</bug_when>
    <thetext>No. Please stop making optimizations to the benchmark.

We shouldn&apos;t be making the benchmark faster. We should be making the browser engines faster.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322072</attachid>
            <date>2017-09-28 01:34:59 -0700</date>
            <delta_ts>2017-09-28 01:34:59 -0700</delta_ts>
            <desc>Patch for backbone model change binding</desc>
            <filename>backbone-svn.pat</filename>
            <type>text/plain</type>
            <size>2248</size>
            <attacher name="Shiyu Zhang">shiyu.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IHJlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9q
cy92aWV3cy90b2RvLXZpZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2pzL3ZpZXdzL3RvZG8tdmlldy5qcwkocmV2aXNp
b24gMjIyNjA1KQorKysgcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL2pzL3ZpZXdzL3RvZG8tdmlldy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzAsMzEgKzMw
LDI5IEBACiAgICAgICAgIC8vICoqVG9kb1ZpZXcqKiBpbiB0aGlzIGFwcCwgd2Ugc2V0IGEgZGly
ZWN0IHJlZmVyZW5jZSBvbiB0aGUgbW9kZWwgZm9yCiAgICAgICAgIC8vIGNvbnZlbmllbmNlLgog
ICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aGlzLmxpc3Rl
blRvKHRoaXMubW9kZWwsICdjaGFuZ2UnLCB0aGlzLnJlbmRlcik7CisgICAgICAgICAgICB0aGlz
Lmxpc3RlblRvKHRoaXMubW9kZWwsICdjaGFuZ2U6Y29tcGxldGVkJywgdGhpcy5yZW5kZXJUb2dn
bGUpOworICAgICAgICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCAnY2hhbmdlOnRpdGxl
JywgdGhpcy5yZW5kZXJUaXRsZSk7CiAgICAgICAgICAgICB0aGlzLmxpc3RlblRvKHRoaXMubW9k
ZWwsICdkZXN0cm95JywgdGhpcy5yZW1vdmUpOwogICAgICAgICAgICAgdGhpcy5saXN0ZW5Ubyh0
aGlzLm1vZGVsLCAndmlzaWJsZScsIHRoaXMudG9nZ2xlVmlzaWJsZSk7CiAgICAgICAgIH0sCiAK
LSAgICAgICAgLy8gUmUtcmVuZGVyIHRoZSB0aXRsZXMgb2YgdGhlIHRvZG8gaXRlbS4KICAgICAg
ICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAvLyBCYWNrYm9uZSBMb2NhbFN0
b3JhZ2UgaXMgYWRkaW5nIGBpZGAgYXR0cmlidXRlIGluc3RhbnRseSBhZnRlcgotICAgICAgICAg
ICAgLy8gY3JlYXRpbmcgYSBtb2RlbC4gIFRoaXMgY2F1c2VzIG91ciBUb2RvVmlldyB0byByZW5k
ZXIgdHdpY2UuIE9uY2UKLSAgICAgICAgICAgIC8vIGFmdGVyIGNyZWF0aW5nIGEgbW9kZWwgYW5k
IG9uY2Ugb24gYGlkYCBjaGFuZ2UuICBXZSB3YW50IHRvCi0gICAgICAgICAgICAvLyBmaWx0ZXIg
b3V0IHRoZSBzZWNvbmQgcmVkdW5kYW50IHJlbmRlciwgd2hpY2ggaXMgY2F1c2VkIGJ5IHRoaXMK
LSAgICAgICAgICAgIC8vIGBpZGAgY2hhbmdlLiAgSXQncyBrbm93biBCYWNrYm9uZSBMb2NhbFN0
b3JhZ2UgYnVnLCB0aGVyZWZvcmUKLSAgICAgICAgICAgIC8vIHdlJ3ZlIHRvIGNyZWF0ZSBhIHdv
cmthcm91bmQuCi0gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2Rv
bXZjL2lzc3Vlcy80NjkKLSAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLmNoYW5nZWQuaWQgIT09
IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQog
ICAgICAgICAgICAgdGhpcy4kZWwuaHRtbCh0aGlzLnRlbXBsYXRlKHRoaXMubW9kZWwudG9KU09O
KCkpKTsKLSAgICAgICAgICAgIHRoaXMuJGVsLnRvZ2dsZUNsYXNzKCdjb21wbGV0ZWQnLCB0aGlz
Lm1vZGVsLmdldCgnY29tcGxldGVkJykpOwotICAgICAgICAgICAgdGhpcy50b2dnbGVWaXNpYmxl
KCk7CiAgICAgICAgICAgICB0aGlzLiRpbnB1dCA9IHRoaXMuJCgnLmVkaXQnKTsKICAgICAgICAg
ICAgIHJldHVybiB0aGlzOwogICAgICAgICB9LAogCisgICAgICAgcmVuZGVyVG9nZ2xlOiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICB0aGlzLiRlbC50b2dnbGVDbGFzcygnY29tcGxldGVk
JywgdGhpcy5tb2RlbC5nZXQoJ2NvbXBsZXRlZCcpKTsKKyAgICAgICAgICAgICAgIHRoaXMudG9n
Z2xlVmlzaWJsZSgpOworICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisK
KyAgICAgICByZW5kZXJUaXRsZTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgdGhpcy4k
KCdsYWJlbCcpLmh0bWwodGhpcy5tb2RlbC5nZXQoJ3RpdGxlJykpOworICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKICAgICAgICAgdG9nZ2xlVmlzaWJsZTogZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgdGhpcy4kZWwudG9nZ2xlQ2xhc3MoJ2hpZGRlbicsIHRoaXMu
aXNIaWRkZW4oKSk7CiAgICAgICAgIH0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>