<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for Ringding</title>
    <link>http://www.advogato.org/person/Ringding/</link>
    <description>Advogato blog for Ringding</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Fri, 24 May 2013 00:49:20 GMT</pubDate>
    <item>
      <pubDate>Wed, 29 Sep 2010 13:33:47 GMT</pubDate>
      <title>29 Sep 2010</title>
      <link>http://www.advogato.org/person/Ringding/diary.html?start=1</link>
      <guid>http://www.advogato.org/person/Ringding/diary.html?start=1</guid>
      <description>&lt;b&gt;Motivated testers are a godsend&lt;/b&gt;&lt;br/&gt;
&lt;p&gt; Ken Gilmer has found &lt;a href="http://kgilmersden.wordpress.com/2010/09/24/javaone-2010-summary/" &gt;some&lt;br/&gt;
examples of surprisingly bad CACAO performance&lt;/a&gt; on ARM&lt;br/&gt;
(see &lt;a href="http://angelshare.org/files/javaone/javaone_fossjava.pdf" &gt;slides&lt;/a&gt;).&lt;br/&gt;
In my understanding, CACAO should be at least as fast as&lt;br/&gt;
JamVM for moderately long-running benchmarks such as&lt;br/&gt;
&lt;tt&gt;probe&lt;/tt&gt; and &lt;tt&gt;decode&lt;/tt&gt;. Before looking into the&lt;br/&gt;
issue, I could only imagine lots of JIT/native transitions&lt;br/&gt;
as the cause of this, but I was not entirely convinced that&lt;br/&gt;
that alone would create such a performance problem.&lt;br/&gt;
&lt;p&gt; Digging into it using &lt;tt&gt;oprofile&lt;/tt&gt;, I quickly found&lt;br/&gt;
some very inefficient code for handling JNI local&lt;br/&gt;
references. Interestingly, it&amp;rsquo;s mostly a &lt;code&gt;memset&lt;/code&gt;&lt;br/&gt;
of 64 bytes that is run on every transition from JIT code to&lt;br/&gt;
native code. It seems that either memory bandwidth on ARM is&lt;br/&gt;
unbelievably low or the machine&amp;rsquo;s caching behavior is&lt;br/&gt;
extremely poor, as the same call, when run on decent x86&lt;br/&gt;
hardware, doesn&amp;rsquo;t even show up in a profile, at least not&lt;br/&gt;
nearly as prominently.&lt;br/&gt;
&lt;p&gt; Anyway, after an &lt;a href="http://mips.complang.tuwien.ac.at/hg/cacao/rev/34bcb84b9dc0" &gt;overhaul&lt;br/&gt;
of this half-decade old code&lt;/a&gt;, performance for these two&lt;br/&gt;
benchmarks has improved by more than 50%. JamVM is still&lt;br/&gt;
faster for &lt;tt&gt;decode&lt;/tt&gt;, but only slightly. I attribute&lt;br/&gt;
this to the garbage collector.&lt;br/&gt;
&lt;p&gt; Without Ken&amp;rsquo;s talk, I would have never found out about this.&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 23 Aug 2010 10:28:23 GMT</pubDate>
      <title>23 Aug 2010</title>
      <link>http://www.advogato.org/person/Ringding/diary.html?start=0</link>
      <guid>http://www.advogato.org/person/Ringding/diary.html?start=0</guid>
      <description>&lt;b&gt;The CACAO 1.0 that wasn&amp;rsquo;t&lt;/b&gt;&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; I have a confession to make: it seems that there will be no&#xD;
CACAO 1.0 release, and I&amp;rsquo;m to blame for that. Maintaining&#xD;
two branches of CACAO has become tiresome and quite boring&#xD;
over time, and I never fully understood what the 1.0 branch&#xD;
was there for, anyway. So when yet another problem with &lt;a href="http://icedtea.classpath.org/" &gt;IcedTea&lt;/a&gt; (which was&#xD;
using CACAO 0.99.4 at the time) popped up which could&#xD;
trivially be solved by switching to the&#xD;
&amp;ldquo;default&amp;rdquo; branch, I&#xD;
suggested that &lt;a href="http://icedtea.classpath.org/" &gt;IcedTea&lt;/a&gt; would be&#xD;
better off just using the Mercurial version, and this is&#xD;
what they did. Now, as this version identifies itself as&#xD;
1.1, I don&amp;rsquo;t see the point of releasing a 1.0 version&#xD;
from a&#xD;
branch that nobody cares about (or should care about, IMHO)&#xD;
anymore.&#xD;
</description>
    </item>
  </channel>
</rss>
