<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
>

  <channel rdf:about="http://lwn.net/headlines/171139/">
    <title>LWN: Comments on "A look at GCJ 4.1"</title>
    <link>http://lwn.net/Articles/171139/</link>
    <description>
This is a special feed containing comments posted
to the individual LWN article titled &quot;A look at GCJ 4.1&quot;.

    </description>

    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>2</syn:updateFrequency>
    <items>
      <rdf:Seq>
	<rdf:li resource="http://lwn.net/Articles/172377/rss" />
	<rdf:li resource="http://lwn.net/Articles/172243/rss" />
	<rdf:li resource="http://lwn.net/Articles/171655/rss" />
	<rdf:li resource="http://lwn.net/Articles/171528/rss" />
	<rdf:li resource="http://lwn.net/Articles/171484/rss" />
	<rdf:li resource="http://lwn.net/Articles/171445/rss" />
	<rdf:li resource="http://lwn.net/Articles/171435/rss" />
	<rdf:li resource="http://lwn.net/Articles/171275/rss" />
	<rdf:li resource="http://lwn.net/Articles/171270/rss" />
      
      </rdf:Seq>
    </items>

  </channel>
    <item rdf:about="http://lwn.net/Articles/172377/rss">
      <title>A look at GCJ 4.1</title>
      <link>http://lwn.net/Articles/172377/rss</link>
      <dc:date>2006-02-16T21:22:06+00:00</dc:date>
      <dc:creator>anton</dc:creator>
      <description>
      &lt;font class=&quot;QuotedText&quot;&gt;&amp;gt;&amp;gt;While Java is a slightly odd language for some things, its&lt;/font&gt;&lt;br&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt;&amp;gt;possibility to run everywhere using bytecode was ahead of its time.&lt;/font&gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt;What happened to p-Code?&lt;/font&gt;&lt;br&gt;
&lt;p&gt;
Way ahead of its time:-).&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/172243/rss">
      <title>Benchmarks...</title>
      <link>http://lwn.net/Articles/172243/rss</link>
      <dc:date>2006-02-16T09:17:34+00:00</dc:date>
      <dc:creator>mjw</dc:creator>
      <description>
      There were recently some benchmark tests done. Some claim gcj produced code is &lt;a href=&quot;http://gcc.gnu.org/ml/java/2006-02/msg00092.html&quot;&gt;native-complied GCJ modules are almost always about 30-40% faster&lt;/a&gt; than other implementations (at least on real world code). Others have &lt;a href=&quot;http://gcc.gnu.org/ml/java/2006-02/msg00127.html&quot;&gt;micro-benchmarks&lt;/a&gt; that show that there are cases where gcj isn't as fast at all. But in the end you have to be careful about what you benchmark, or &lt;a href=&quot;http://gcc.gnu.org/ml/java/2006-02/msg00137.html&quot;&gt;GCJ will just optimize away all non-used code&lt;/a&gt; :)
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171655/rss">
      <title>Not too fast on amd64</title>
      <link>http://lwn.net/Articles/171655/rss</link>
      <dc:date>2006-02-12T02:54:14+00:00</dc:date>
      <dc:creator>man_ls</dc:creator>
      <description>
      I did not keep the code around, so I rewrote it -- now with a much simpler structure -- and run it on my amd64 (some call it x86-64) running OpenSUSE 10.0. The machine had sporadic loads; but the results are quite similar over several rounds, and quite definite too.
&lt;p&gt;
I will post the code for review if anyone is interested. Sun's JDK 1.5 revision 6 for amd64, and gcj 4.0.2 20050901 with optimization &lt;code&gt;-O2&lt;/code&gt; were used. The results are:
&lt;pre&gt;
results for null benchmark
java        gcj
0.007       1.638

results for add int benchmark
java        gcj
1.298       1.118

results for add long benchmark
java        gcj
0.751       1.810

results for add float benchmark
java        gcj
3.054       2.399

results for add double benchmark
java        gcj
3.103       2.223

results for method call benchmark
java        gcj
0.069       4.398

results for create object benchmark
java        gcj
27.28       148.356

results for append string benchmark, 1/5000
java        gcj
0.069       0.183
&lt;/pre&gt;
As you can see Sun has improved some things, notably method calls; while object creation has horrible performance in both Sun's java and GCJ. (The null benchmark was an artifact of the previous test setup, so you can ignore it; probably string concatenation too.) GCJ keeps a slight edge in some arithmetic operations. 
&lt;p&gt;
I'm looking forward to try out GCJ 4.1.
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171528/rss">
      <title>A look at GCJ 4.1</title>
      <link>http://lwn.net/Articles/171528/rss</link>
      <dc:date>2006-02-10T18:43:55+00:00</dc:date>
      <dc:creator>jzbiciak</dc:creator>
      <description>
      &lt;BLOCKQUOTE&gt;&lt;I&gt;While Java is a slightly odd language for some things, its possibility to run everywhere using bytecode was ahead of its time.&lt;/I&gt;&lt;/BLOCKQUOTE&gt;

What happened to &lt;A HREF=&quot;http://en.wikipedia.org/wiki/P-Code_machine&quot;&gt;p-Code&lt;/A&gt;?
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171484/rss">
      <title>pre-compiled, fast code</title>
      <link>http://lwn.net/Articles/171484/rss</link>
      <dc:date>2006-02-10T13:52:43+00:00</dc:date>
      <dc:creator>man_ls</dc:creator>
      <description>
      I also did some benchmarks some time ago (may 2004). The results are &lt;a href=&quot;http://libertonia.escomposlinux.org/story/2004/5/9/202121/4363&quot; &gt;here (in Spanish, the site is under maintenance right now)&lt;/a&gt;; I will quote some of them here. Code was inserted in a loop and repeated 10^9 times, except the last loop which had 2*10^5 iterations.
&lt;pre&gt;
results for null benchmark
java        gcj
0.812       1.527

results for add int benchmark
java        gcj
2.66        0.082

results for add float benchmark
java        gcj
3.703       0.981

results for add double benchmark
java        gcj
2.649       0.985

results for method call benchmark
java        gcj
2.818       0.081

results for create object benchmark
java        gcj
3.081       10.02

results for append string benchmark, 1/5000
java        gcj
4.003       9.583
&lt;/pre&gt;
As you can see, arithmetic computations and method calls were much faster in gcj; object creation was slower. It would be interesting to repeat the tests again, with newer versions of both Sun's JVM and GCJ. I will see if I have the code lying around.
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171445/rss">
      <title>A look at GCJ 4.1</title>
      <link>http://lwn.net/Articles/171445/rss</link>
      <dc:date>2006-02-10T02:59:02+00:00</dc:date>
      <dc:creator>pimlott</dc:creator>
      <description>
      &lt;blockquote type=cite&gt;its possibility to run everywhere using bytecode was ahead of its time.&lt;/blockquote&gt;

Compiling to machine-independent bytecode is a &lt;a href=&quot;http://foldoc.org/?OCODE&quot;&gt;very&lt;/a&gt;, &lt;a href=&quot;http://wiki.cs.uiuc.edu/VisualWorks/Overview+of+different+implementations+of+Smalltalk&quot;&gt;very&lt;/a&gt;, &lt;a href=&quot;http://www.inform-fiction.org/zmachine/interpreters.html&quot;&gt;very&lt;/a&gt; old idea.
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171435/rss">
      <title>pre-compiled, fast code</title>
      <link>http://lwn.net/Articles/171435/rss</link>
      <dc:date>2006-02-10T00:49:49+00:00</dc:date>
      <dc:creator>pkolloch</dc:creator>
      <description>
      I think that precompiled Java code (using gcj) is often still slower than   &lt;br&gt;
byte code on a recent commercial JVM with JIT. That doesn't mean that it   &lt;br&gt;
isn't quite fast!    &lt;br&gt;
   &lt;br&gt;
(_Years_ ago I made some simplistic tests showing that the C++ STL   &lt;br&gt;
containers didn't perform significantly better than the Java equivalents   &lt;br&gt;
when using a decent amount of initial JVM memory. Both sides have probably   &lt;br&gt;
been improved now.)  &lt;br&gt;
  &lt;br&gt;
What is absolutely wonderful about precompiled, binary Java code is  &lt;br&gt;
integration with C, C++, ...! And then using gdb to debug it all! &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171275/rss">
      <title>Run everywhere?</title>
      <link>http://lwn.net/Articles/171275/rss</link>
      <dc:date>2006-02-09T13:26:56+00:00</dc:date>
      <dc:creator>man_ls</dc:creator>
      <description>
      &lt;blockquote&gt;&lt;cite&gt;
While Java is a slightly odd language for some things, its possibility to run everywhere using bytecode was ahead of its time.
&lt;/cite&gt;&lt;/blockquote&gt;
With Perl you can also run the same file, and &lt;a href=&quot;http://www.cpan.org/ports/index.html&quot; &gt;on many more platforms than Java&lt;/a&gt;. So it is with any program in Bash, Python, BASIC... and you don't have to go through the motion of a pre-compilation which serves no practical purpose other than a very primitive obfuscation.
&lt;p&gt;
What I find really interesting in gcj is the ability to compile Java into a useful and fast binary for your platform.
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171270/rss">
      <title>A look at GCJ 4.1</title>
      <link>http://lwn.net/Articles/171270/rss</link>
      <dc:date>2006-02-09T10:57:30+00:00</dc:date>
      <dc:creator>kleptog</dc:creator>
      <description>
      Thanks for the update it's really quite interesting. One thing that strikes me is the Java might finally be able to take the position it could have had years ago. While Java is a slightly odd language for some things, its possibility to run everywhere using bytecode was ahead of its time.&lt;br&gt;
&lt;p&gt;
But it has always been hampered by restrictive licencing and initially speed. I remember at Uni we used the IBM Java compiler because the standard one was sloooow. It was cool to be able to test and run your assignments at home and then upload them unchanged to the Uni (different platform, different OS).&lt;br&gt;
&lt;p&gt;
It's also nice to have Java installed via your distribution so you can run Java programs without having to mess with third party installers...&lt;br&gt;
      
      </description>
    </item>
</rdf:RDF>

