<?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>97910</bug_id>
          
          <creation_ts>2012-09-28 07:12:50 -0700</creation_ts>
          <short_desc>[SVG] Use references are much slower than necessary</short_desc>
          <delta_ts>2012-10-01 01:12:23 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Branimir Lambov">blambov</reporter>
          <assigned_to name="Florin Malita">fmalita</assigned_to>
          <cc>fmalita</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>730628</commentid>
    <comment_count>0</comment_count>
      <attachid>166245</attachid>
    <who name="Branimir Lambov">blambov</who>
    <bug_when>2012-09-28 07:12:50 -0700</bug_when>
    <thetext>Created attachment 166245
Example setting href attribute

The attached files contain a hierarchy of &apos;use&apos; elements to build a graphic containing a few hundred triangles. It is not a problem for Chrome to render the graphic fluidly (use-levels-move), but if a new &apos;use&apos; element references the graphic (use-levels-new-use), or the element&apos;s &apos;href&apos; is changed (use-levels-set-href), the performance falls dramatically.

WebKit is copying the elements referenced by &apos;use&apos;, which should not be necessary at all. In other tests we have seen that it is actually faster to explicitly recreate referenced nodes with JavaScript than to refer to them with &apos;use&apos; elements.

Opera does not have this problem, and runs all these examples at ~50 fps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730629</commentid>
    <comment_count>1</comment_count>
      <attachid>166246</attachid>
    <who name="Branimir Lambov">blambov</who>
    <bug_when>2012-09-28 07:13:24 -0700</bug_when>
    <thetext>Created attachment 166246
Example creating new &apos;use&apos; element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730631</commentid>
    <comment_count>2</comment_count>
      <attachid>166247</attachid>
    <who name="Branimir Lambov">blambov</who>
    <bug_when>2012-09-28 07:15:50 -0700</bug_when>
    <thetext>Created attachment 166247
Example without changing reference, demonstrating what the performance should be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730657</commentid>
    <comment_count>3</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-09-28 07:57:34 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; WebKit is copying the elements referenced by &apos;use&apos;, which should not be necessary at all.

Deep cloning is likely needed to support full &lt;use&gt; semantics - see http://www.w3.org/TR/SVG/struct.html#UseElement

But the profile for the slow tests does seem odd - most cycles wasted in synchronization and string manipulation code:


  2.77%           chrome  libpthread-2.15.so                  [.] pthread_mutex_unlock
  2.59%           chrome  libpthread-2.15.so                  [.] pthread_mutex_lock
  1.36%          swapper  [kernel.kallsyms]                   [k] mwait_idle_with_hints
  1.35%           chrome  libwebkit.so                        [.] WTF::StringHasher::addCharactersToHash(unsigned short, unsigned short)
  1.25%           chrome  libwebkit.so                        [.] WTF::intHash(unsigned long)
  1.10%           chrome  libwebkit.so                        [.] WTF::OwnPtr&lt;WTF::Mutex&gt;::operator*() const
  1.05%           chrome  libwebkit.so                        [.] WTF::Locker&lt;WTF::Mutex&gt;::Locker(WTF::Mutex&amp;)
  0.96%           chrome  libwebkit.so                        [.] WTF::Mutex::lock()
  0.94%           chrome  libwebkit.so                        [.] WebCore::Node::getFlag(WebCore::Node::NodeFlags) const
  0.79%           chrome  libwebkit.so                        [.] WTF::ThreadRestrictionVerifier::isSafeToUse() const
  0.76%           chrome  libwebkit.so                        [.] WTF::RefPtr&lt;WTF::StringImpl&gt;::get() const
  0.73%           chrome  chrome                              [.] (anonymous namespace)::FL_Previous_No_Check(void*)
  0.71%           chrome  libwebkit.so                        [.] unsigned int WTF::StringHasher::computeHashAndMaskTop8Bits&lt;unsigned short, &amp;(WTF::StringHasher::defaultConverter(unsi
  0.63%           chrome  libpthread-2.15.so                  [.] pthread_getspecific
  0.58%           chrome  chrome                              [.] PackedCache&lt;36, unsigned long&gt;::GetOrDefault(unsigned long, unsigned long) const
  0.57%           chrome  libwebkit.so                        [.] WebCore::Node::document() const
  0.50%           chrome  chrome                              [.] TCMalloc_PageMap3&lt;36&gt;::get(unsigned long) const
  0.50%           chrome  libwebkit.so                        [.] bool WTF::IdentityHashTranslator&lt;WTF::PtrHash&lt;WebCore::SVGElement*&gt; &gt;::equal&lt;WebCore::SVGElement*&gt;(WebCore::SVGElemen
  0.48%           chrome  libwebkit.so                        [.] WTF::Mutex::unlock()
  0.47%         cinnamon  [kernel.kallsyms]                   [k] audit_filter_syscall
  0.46%           chrome  libwebkit.so                        [.] WTF::ThreadIdentifierData::identifier()
  0.44%           chrome  libc-2.15.so                        [.] __memset_sse2
  0.44%           chrome  chrome                              [.] base::subtle::Acquire_Load(long const volatile*)
  0.44%           chrome  chrome (deleted)                    [.] 0x3255b0f
  0.39%           chrome  libwebkit.so                        [.] WTF::String::impl() const
  0.38%           chrome  libwebkit.so                        [.] WTF::Locker&lt;WTF::Mutex&gt;::~Locker()
  0.37%           chrome  libwebkit.so                        [.] void WTF::addIterator&lt;WebCore::SVGElement*, WTF::KeyValuePair&lt;WebCore::SVGElement*, WTF::OwnPtr&lt;WTF::HashSet&lt;WebCore:
  0.37%           chrome  libwebkit.so                        [.] WTF::RefCountedBase::derefBase()
  0.35%           chrome  chrome                              [.] CheckCachedSizeClass(void*)
  0.32%           chrome  libwebkit.so                        [.] WebCore::RenderObject::document() const
  0.32%           chrome  chrome                              [.] (anonymous namespace)::MaskPtr(void*)
  0.32%           chrome  libwebkit.so                        [.] WTF::StringHasher::defaultConverter(unsigned short)
  0.31%           chrome  libwebkit.so                        [.] WTF::doubleHash(unsigned int)
  0.31%           chrome  libwebkit.so                        [.] WTF::RefCountedBase::ref()
  0.28%           chrome  libwebkit.so                        [.] void WTF::removeIterator&lt;WebCore::SVGElement*, WTF::KeyValuePair&lt;WebCore::SVGElement*, WTF::OwnPtr&lt;WTF::HashSet&lt;WebCo
  0.27%           chrome  libwebkit.so                        [.] WTF::currentThread()
  0.27%           chrome  libwebkit.so                        [.] WTF::StringHasher::avalancheBits() const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731459</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-10-01 01:12:23 -0700</bug_when>
    <thetext>See 97905 comment #4 for a way out of this mess.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>166245</attachid>
            <date>2012-09-28 07:12:50 -0700</date>
            <delta_ts>2012-09-28 07:12:50 -0700</delta_ts>
            <desc>Example setting href attribute</desc>
            <filename>use-levels-set-href.svg</filename>
            <type>image/svg+xml</type>
            <size>3558</size>
            <attacher name="Branimir Lambov">blambov</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHN0eWxlPSJwb2ludGVyLWV2
ZW50czogbm9uZTsgd2lkdGg6IDU1MHB4OyBoZWlnaHQ6IDQwMHB4OyI+CiAgICA8ZGVmcz4KICAg
ICAgICAgICAgPGcgaWQ9InVuaXQiPgoJCTxwb2x5Z29uIHBvaW50cz0iMCwwIDEwLDAgNSw4LjY2
MDI1NDAzNzg0NDM5Ii8+CSAgICAKCSAgICA8L2c+CgogICAgICAgICAgICA8ZyBpZD0icSI+CiAg
ICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjdW5pdCIgeD0iMTAiIHk9IjAiIGZpbGw9InJl
ZCIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3VuaXQiIHRyYW5zZm9ybT0idHJh
bnNsYXRlKDEwLDApIHJvdGF0ZSg2MCkiIGZpbGw9ImdyZWVuIi8+CiAgICAgICAgICAgICAgPHVz
ZSB4bGluazpocmVmPSIjdW5pdCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsMCkgcm90YXRlKDEy
MCkiIGZpbGw9ImJsdWUiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiN1bml0IiB0
cmFuc2Zvcm09InJvdGF0ZSg2MCkgdHJhbnNsYXRlKDEwLDApIHJvdGF0ZSgtNjApIiBmaWxsPSJw
dXJwbGUiLz4KCSAgICA8L2c+CgogICAgICAgICAgICA8ZyBpZD0icXEiPgogICAgICAgICAgICAg
IDx1c2UgeGxpbms6aHJlZj0iI3EiIHg9IjIwIiB5PSIwIi8+CiAgICAgICAgICAgICAgPHVzZSB4
bGluazpocmVmPSIjcSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAsMCkgcm90YXRlKDYwKSIvPgog
ICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3EiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIw
LDApIHJvdGF0ZSgxMjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjdW5pdCIg
dHJhbnNmb3JtPSJyb3RhdGUoNjApIHRyYW5zbGF0ZSgyMCwwKSByb3RhdGUoLTYwKSBzY2FsZSgy
KSIgZmlsbD0icHVycGxlIi8+CiAgICAgICAgICAgIDwvZz4KCiAgICAgICAgICAgIDxnIGlkPSJx
cXEiPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxIiB4PSI0MCIgeT0iMCIvPgog
ICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0
MCwwKSByb3RhdGUoNjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXEiIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDQwLDApIHJvdGF0ZSgxMjApIi8+CiAgICAgICAgICAgICAgPHVz
ZSB4bGluazpocmVmPSIjcSIgdHJhbnNmb3JtPSJyb3RhdGUoNjApIHRyYW5zbGF0ZSg0MCwwKSBy
b3RhdGUoLTYwKSBzY2FsZSgyKSIvPgogICAgICAgICAgICA8L2c+CgogICAgICAgICAgICA8ZyBp
ZD0icXFxcSI+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXFxIiB4PSI4MCIgeT0i
MCIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxcSIgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoODAsMCkgcm90YXRlKDYwKSIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0i
I3FxcSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsMCkgcm90YXRlKDEyMCkiLz4KICAgICAgICAg
ICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcSIgIHRyYW5zZm9ybT0icm90YXRlKDYwKSB0cmFuc2xh
dGUoODAsMCkgcm90YXRlKC02MCkgc2NhbGUoMikiLz4KCiAgICAgICAgICAgIDwvZz4KICAgICAg
ICAgICAgPGcgaWQ9InFxcXFxIj4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcXFx
IiB4PSIxNjAiIHk9IjAiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcXFxIiB0
cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjAsMCkgcm90YXRlKDYwKSIvPgogICAgICAgICAgICAgIDx1
c2UgeGxpbms6aHJlZj0iI3FxcXEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MCwwKSByb3RhdGUo
MTIwKSIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxcSIgdHJhbnNmb3JtPSJy
b3RhdGUoNjApIHRyYW5zbGF0ZSgxNjAsMCkgcm90YXRlKC02MCkgc2NhbGUoMikiLz4KICAgICAg
ICAgICAgPC9nPgogICAgPC9kZWZzPgoJCQk8ZyBpZD0ibW92ZSI+Cjx1c2UgeGxpbms6aHJlZj0i
I3FxcXFxIiAvPgoJCQk8L2c+CgkJCTxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMwMCAyMDApIj48
cmVjdCB3aWR0aD0iNzAiIGhlaWdodD0iMjYiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0icmdiKDI1
NSwyNTUsMjU1KSIgZmlsbC1vcGFjaXR5PSIxLjAwMCIgc3Ryb2tlPSJyZ2IoMCwwLDApIiBzdHJv
a2Utb3BhY2l0eT0iMS4wMDAiPjwvcmVjdD48dGV4dCBpZD0iRlBTIiB5PSIyMyIgZm9udC1mYW1p
bHk9IlZlcmRhbmEiIGZvbnQtc2l6ZT0iMjMiPjA8L3RleHQ+CgkJCTwvZz4KPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICB2YXIgZiA9IDA7CgkJdmFyIHRpbWVz
ID0gW0RhdGUubm93KCldOwogICAgdmFyIHBpY2FjaHUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncGljYWNodScpOwogICAgdmFyIHN2ZyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7
CiAgICB2YXIgeGxpbmsgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI7CiAgICB2YXIg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vdmUiKTsKICAgIHZhciBpZD0i
I3FxcXFxIjsKICAgIAogICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID0KICAgICAgd2luZG93Wydy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXSB8fAogICAgICB3aW5kb3dbJ3dlYmtpdFJlcXVlc3RBbmlt
YXRpb25GcmFtZSddIHx8CiAgICAgIHdpbmRvd1snbW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lJ10g
fHwKICAgICAgd2luZG93WydvUmVxdWVzdEFuaW1hdGlvbkZyYW1lJ10gfHwKICAgICAgd2luZG93
Wydtc1JlcXVlc3RBbmltYXRpb25GcmFtZSddIHx8CiAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7
CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA2MCk7CiAgICAgIH07
CgoJCWZ1bmN0aW9uIGZyYW1lKCkgewoJCQl0aW1lcy5wdXNoKERhdGUubm93KCkpOwoJCSAgdmFy
IGZwcyA9ICh0aW1lc1t0aW1lcy5sZW5ndGggLSAxXSAtIHRpbWVzWzBdKSAvICh0aW1lcy5sZW5n
dGggLSAxKTsKCQkJd2hpbGUgKHRpbWVzLmxlbmd0aCA+IDEwKSB7CgkJCQl0aW1lcy5zaGlmdCgp
OwoJCQl9CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGUFMiKS50ZXh0Q29udGVudCA9ICgx
MDAwL2ZwcykudG9GaXhlZCgyKTsKCQkJdmFyIG07CgoJCQl2YXIgbm9kZSA9IGNvbnRhaW5lci5m
aXJzdEVsZW1lbnRDaGlsZDsKCQkJbm9kZS5zZXRBdHRyaWJ1dGVOUyh4bGluaywgImhyZWYiLCBp
ZCk7CgkJCW5vZGUuc2V0QXR0cmlidXRlKCJ4IiwgMTAgKyBNYXRoLmFicyhmJTIwLTEwKSk7CgoJ
CQlmKys7CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZSk7CgkJfTsKICAgIAogICAg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lKTsKLy8gICAgc2V0SW50ZXJ2YWwoZnJhbWUsIDAp
OwovL11dPjwvc2NyaXB0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>166246</attachid>
            <date>2012-09-28 07:13:24 -0700</date>
            <delta_ts>2012-09-28 07:13:24 -0700</delta_ts>
            <desc>Example creating new &apos;use&apos; element</desc>
            <filename>use-levels-new-use.svg</filename>
            <type>image/svg+xml</type>
            <size>3627</size>
            <attacher name="Branimir Lambov">blambov</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHN0eWxlPSJwb2ludGVyLWV2
ZW50czogbm9uZTsgd2lkdGg6IDU1MHB4OyBoZWlnaHQ6IDQwMHB4OyI+CiAgICA8ZGVmcz4KICAg
ICAgICAgICAgPGcgaWQ9InVuaXQiPgoJCTxwb2x5Z29uIHBvaW50cz0iMCwwIDEwLDAgNSw4LjY2
MDI1NDAzNzg0NDM5Ii8+CSAgICAKCSAgICA8L2c+CgogICAgICAgICAgICA8ZyBpZD0icSI+CiAg
ICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjdW5pdCIgeD0iMTAiIHk9IjAiIGZpbGw9InJl
ZCIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3VuaXQiIHRyYW5zZm9ybT0idHJh
bnNsYXRlKDEwLDApIHJvdGF0ZSg2MCkiIGZpbGw9ImdyZWVuIi8+CiAgICAgICAgICAgICAgPHVz
ZSB4bGluazpocmVmPSIjdW5pdCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsMCkgcm90YXRlKDEy
MCkiIGZpbGw9ImJsdWUiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiN1bml0IiB0
cmFuc2Zvcm09InJvdGF0ZSg2MCkgdHJhbnNsYXRlKDEwLDApIHJvdGF0ZSgtNjApIiBmaWxsPSJw
dXJwbGUiLz4KCSAgICA8L2c+CgogICAgICAgICAgICA8ZyBpZD0icXEiPgogICAgICAgICAgICAg
IDx1c2UgeGxpbms6aHJlZj0iI3EiIHg9IjIwIiB5PSIwIi8+CiAgICAgICAgICAgICAgPHVzZSB4
bGluazpocmVmPSIjcSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAsMCkgcm90YXRlKDYwKSIvPgog
ICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3EiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIw
LDApIHJvdGF0ZSgxMjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjdW5pdCIg
dHJhbnNmb3JtPSJyb3RhdGUoNjApIHRyYW5zbGF0ZSgyMCwwKSByb3RhdGUoLTYwKSBzY2FsZSgy
KSIgZmlsbD0icHVycGxlIi8+CiAgICAgICAgICAgIDwvZz4KCiAgICAgICAgICAgIDxnIGlkPSJx
cXEiPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxIiB4PSI0MCIgeT0iMCIvPgog
ICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0
MCwwKSByb3RhdGUoNjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXEiIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDQwLDApIHJvdGF0ZSgxMjApIi8+CiAgICAgICAgICAgICAgPHVz
ZSB4bGluazpocmVmPSIjcSIgdHJhbnNmb3JtPSJyb3RhdGUoNjApIHRyYW5zbGF0ZSg0MCwwKSBy
b3RhdGUoLTYwKSBzY2FsZSgyKSIvPgogICAgICAgICAgICA8L2c+CgogICAgICAgICAgICA8ZyBp
ZD0icXFxcSI+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXFxIiB4PSI4MCIgeT0i
MCIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxcSIgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoODAsMCkgcm90YXRlKDYwKSIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0i
I3FxcSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsMCkgcm90YXRlKDEyMCkiLz4KICAgICAgICAg
ICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcSIgIHRyYW5zZm9ybT0icm90YXRlKDYwKSB0cmFuc2xh
dGUoODAsMCkgcm90YXRlKC02MCkgc2NhbGUoMikiLz4KCiAgICAgICAgICAgIDwvZz4KICAgICAg
ICAgICAgPGcgaWQ9InFxcXFxIj4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcXFx
IiB4PSIxNjAiIHk9IjAiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcXFxIiB0
cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjAsMCkgcm90YXRlKDYwKSIvPgogICAgICAgICAgICAgIDx1
c2UgeGxpbms6aHJlZj0iI3FxcXEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MCwwKSByb3RhdGUo
MTIwKSIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxcSIgdHJhbnNmb3JtPSJy
b3RhdGUoNjApIHRyYW5zbGF0ZSgxNjAsMCkgcm90YXRlKC02MCkgc2NhbGUoMikiLz4KICAgICAg
ICAgICAgPC9nPgogICAgPC9kZWZzPgoJCQk8ZyBpZD0ibW92ZSI+Cjx1c2UgeGxpbms6aHJlZj0i
I3FxcSIgLz4KCQkJPC9nPgoJCQk8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAgMjAwKSI+PHJl
Y3Qgd2lkdGg9IjcwIiBoZWlnaHQ9IjI2IiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9InJnYigyNTUs
MjU1LDI1NSkiIGZpbGwtb3BhY2l0eT0iMS4wMDAiIHN0cm9rZT0icmdiKDAsMCwwKSIgc3Ryb2tl
LW9wYWNpdHk9IjEuMDAwIj48L3JlY3Q+PHRleHQgaWQ9IkZQUyIgeT0iMjMiIGZvbnQtZmFtaWx5
PSJWZXJkYW5hIiBmb250LXNpemU9IjIzIj4wPC90ZXh0PgoJCQk8L2c+CjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgdmFyIGYgPSAwOwoJCXZhciB0aW1lcyA9
IFtEYXRlLm5vdygpXTsKICAgIHZhciBwaWNhY2h1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BpY2FjaHUnKTsKICAgIHZhciBzdmcgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOwog
ICAgdmFyIHhsaW5rID0gImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiOwogICAgdmFyIGNv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb3ZlIik7CiAgICB2YXIgaWQ9IiNx
cXFxcSI7CiAgICAKICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9CiAgICAgIHdpbmRvd1sncmVx
dWVzdEFuaW1hdGlvbkZyYW1lJ10gfHwKICAgICAgd2luZG93Wyd3ZWJraXRSZXF1ZXN0QW5pbWF0
aW9uRnJhbWUnXSB8fAogICAgICB3aW5kb3dbJ21velJlcXVlc3RBbmltYXRpb25GcmFtZSddIHx8
CiAgICAgIHdpbmRvd1snb1JlcXVlc3RBbmltYXRpb25GcmFtZSddIHx8CiAgICAgIHdpbmRvd1sn
bXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXSB8fAogICAgICBmdW5jdGlvbihjYWxsYmFjaykgewog
ICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwIC8gNjApOwogICAgICB9OwoK
CQlmdW5jdGlvbiBmcmFtZSgpIHsKCQkJdGltZXMucHVzaChEYXRlLm5vdygpKTsKCQkgIHZhciBm
cHMgPSAodGltZXNbdGltZXMubGVuZ3RoIC0gMV0gLSB0aW1lc1swXSkgLyAodGltZXMubGVuZ3Ro
IC0gMSk7CgkJCXdoaWxlICh0aW1lcy5sZW5ndGggPiAxMCkgewoJCQkJdGltZXMuc2hpZnQoKTsK
CQkJfQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRlBTIikudGV4dENvbnRlbnQgPSAoMTAw
MC9mcHMpLnRvRml4ZWQoMik7CgkJCXZhciBtOwoKCQkJdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoc3ZnLCAidXNlIik7CgkJCW5vZGUuc2V0QXR0cmlidXRlTlMoeGxpbmssICJo
cmVmIiwgaWQpOwoJCQlub2RlLnNldEF0dHJpYnV0ZSgieCIsIDEwICsgTWF0aC5hYnMoZiUyMC0x
MCkpOwoJCQljb250YWluZXIucmVwbGFjZUNoaWxkKG5vZGUsIGNvbnRhaW5lci5maXJzdEVsZW1l
bnRDaGlsZCk7CgoJCQlmKys7CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZSk7CgkJ
fTsKICAgIAogICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lKTsKLy8gICAgc2V0SW50ZXJ2
YWwoZnJhbWUsIDApOwovL11dPjwvc2NyaXB0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>166247</attachid>
            <date>2012-09-28 07:15:50 -0700</date>
            <delta_ts>2012-09-28 07:15:50 -0700</delta_ts>
            <desc>Example without changing reference, demonstrating what the performance should be</desc>
            <filename>use-levels-move.svg</filename>
            <type>image/svg+xml</type>
            <size>3515</size>
            <attacher name="Branimir Lambov">blambov</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHN0eWxlPSJwb2ludGVyLWV2
ZW50czogbm9uZTsgd2lkdGg6IDU1MHB4OyBoZWlnaHQ6IDQwMHB4OyI+CiAgICA8ZGVmcz4KICAg
ICAgICAgICAgPGcgaWQ9InVuaXQiPgoJCTxwb2x5Z29uIHBvaW50cz0iMCwwIDEwLDAgNSw4LjY2
MDI1NDAzNzg0NDM5Ii8+CSAgICAKCSAgICA8L2c+CgogICAgICAgICAgICA8ZyBpZD0icSI+CiAg
ICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjdW5pdCIgeD0iMTAiIHk9IjAiIGZpbGw9InJl
ZCIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3VuaXQiIHRyYW5zZm9ybT0idHJh
bnNsYXRlKDEwLDApIHJvdGF0ZSg2MCkiIGZpbGw9ImdyZWVuIi8+CiAgICAgICAgICAgICAgPHVz
ZSB4bGluazpocmVmPSIjdW5pdCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsMCkgcm90YXRlKDEy
MCkiIGZpbGw9ImJsdWUiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiN1bml0IiB0
cmFuc2Zvcm09InJvdGF0ZSg2MCkgdHJhbnNsYXRlKDEwLDApIHJvdGF0ZSgtNjApIiBmaWxsPSJw
dXJwbGUiLz4KCSAgICA8L2c+CgogICAgICAgICAgICA8ZyBpZD0icXEiPgogICAgICAgICAgICAg
IDx1c2UgeGxpbms6aHJlZj0iI3EiIHg9IjIwIiB5PSIwIi8+CiAgICAgICAgICAgICAgPHVzZSB4
bGluazpocmVmPSIjcSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAsMCkgcm90YXRlKDYwKSIvPgog
ICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3EiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIw
LDApIHJvdGF0ZSgxMjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjdW5pdCIg
dHJhbnNmb3JtPSJyb3RhdGUoNjApIHRyYW5zbGF0ZSgyMCwwKSByb3RhdGUoLTYwKSBzY2FsZSgy
KSIgZmlsbD0icHVycGxlIi8+CiAgICAgICAgICAgIDwvZz4KCiAgICAgICAgICAgIDxnIGlkPSJx
cXEiPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxIiB4PSI0MCIgeT0iMCIvPgog
ICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0
MCwwKSByb3RhdGUoNjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXEiIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDQwLDApIHJvdGF0ZSgxMjApIi8+CiAgICAgICAgICAgICAgPHVz
ZSB4bGluazpocmVmPSIjcSIgdHJhbnNmb3JtPSJyb3RhdGUoNjApIHRyYW5zbGF0ZSg0MCwwKSBy
b3RhdGUoLTYwKSBzY2FsZSgyKSIvPgogICAgICAgICAgICA8L2c+CgogICAgICAgICAgICA8ZyBp
ZD0icXFxcSI+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXFxIiB4PSI4MCIgeT0i
MCIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxcSIgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoODAsMCkgcm90YXRlKDYwKSIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0i
I3FxcSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsMCkgcm90YXRlKDEyMCkiLz4KICAgICAgICAg
ICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcSIgIHRyYW5zZm9ybT0icm90YXRlKDYwKSB0cmFuc2xh
dGUoODAsMCkgcm90YXRlKC02MCkgc2NhbGUoMikiLz4KCiAgICAgICAgICAgIDwvZz4KICAgICAg
ICAgICAgPGcgaWQ9InFxcXFxIj4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcXFx
IiB4PSIxNjAiIHk9IjAiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxcXFxIiB0
cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjAsMCkgcm90YXRlKDYwKSIvPgogICAgICAgICAgICAgIDx1
c2UgeGxpbms6aHJlZj0iI3FxcXEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MCwwKSByb3RhdGUo
MTIwKSIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxcSIgdHJhbnNmb3JtPSJy
b3RhdGUoNjApIHRyYW5zbGF0ZSgxNjAsMCkgcm90YXRlKC02MCkgc2NhbGUoMikiLz4KICAgICAg
ICAgICAgPC9nPgogICAgPC9kZWZzPgoJCQk8ZyBpZD0ibW92ZSI+Cjx1c2UgeGxpbms6aHJlZj0i
I3FxcXFxIiAvPgoJCQk8L2c+CgkJCTxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMwMCAyMDApIj48
cmVjdCB3aWR0aD0iNzAiIGhlaWdodD0iMjYiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0icmdiKDI1
NSwyNTUsMjU1KSIgZmlsbC1vcGFjaXR5PSIxLjAwMCIgc3Ryb2tlPSJyZ2IoMCwwLDApIiBzdHJv
a2Utb3BhY2l0eT0iMS4wMDAiPjwvcmVjdD48dGV4dCBpZD0iRlBTIiB5PSIyMyIgZm9udC1mYW1p
bHk9IlZlcmRhbmEiIGZvbnQtc2l6ZT0iMjMiPjA8L3RleHQ+CgkJCTwvZz4KPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICB2YXIgZiA9IDA7CgkJdmFyIHRpbWVz
ID0gW0RhdGUubm93KCldOwogICAgdmFyIHBpY2FjaHUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncGljYWNodScpOwogICAgdmFyIHN2ZyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7
CiAgICB2YXIgeGxpbmsgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI7CiAgICB2YXIg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vdmUiKTsKICAgIHZhciBpZD0i
I3FxcXFxIjsKICAgIAogICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID0KICAgICAgd2luZG93Wydy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXSB8fAogICAgICB3aW5kb3dbJ3dlYmtpdFJlcXVlc3RBbmlt
YXRpb25GcmFtZSddIHx8CiAgICAgIHdpbmRvd1snbW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lJ10g
fHwKICAgICAgd2luZG93WydvUmVxdWVzdEFuaW1hdGlvbkZyYW1lJ10gfHwKICAgICAgd2luZG93
Wydtc1JlcXVlc3RBbmltYXRpb25GcmFtZSddIHx8CiAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7
CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA2MCk7CiAgICAgIH07
CgoJCWZ1bmN0aW9uIGZyYW1lKCkgewoJCQl0aW1lcy5wdXNoKERhdGUubm93KCkpOwoJCSAgdmFy
IGZwcyA9ICh0aW1lc1t0aW1lcy5sZW5ndGggLSAxXSAtIHRpbWVzWzBdKSAvICh0aW1lcy5sZW5n
dGggLSAxKTsKCQkJd2hpbGUgKHRpbWVzLmxlbmd0aCA+IDEwKSB7CgkJCQl0aW1lcy5zaGlmdCgp
OwoJCQl9CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGUFMiKS50ZXh0Q29udGVudCA9ICgx
MDAwL2ZwcykudG9GaXhlZCgyKTsKCQkJdmFyIG07CgoJCQl2YXIgbm9kZSA9IGNvbnRhaW5lci5m
aXJzdEVsZW1lbnRDaGlsZDsKCQkJbm9kZS5zZXRBdHRyaWJ1dGUoIngiLCAxMCArIE1hdGguYWJz
KGYlMjAtMTApKTsKCgkJCWYrKzsKICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lKTsK
CQl9OwogICAgCiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWUpOwovLyAgICBzZXRJbnRl
cnZhbChmcmFtZSwgMCk7Ci8vXV0+PC9zY3JpcHQ+Cjwvc3ZnPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>