<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Groovy&#8217;s Performance is Not Subjective</title>
	<atom:link href="http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/feed" rel="self" type="application/rss+xml" />
	<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective</link>
	<description>(permanently in beta)</description>
	<lastBuildDate>Sun, 29 Aug 2010 20:01:44 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: kim</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3823</link>
		<dc:creator>kim</dc:creator>
		<pubDate>Sat, 12 Jul 2008 07:51:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3823</guid>
		<description>can anyone tell me about the readability of this language(groovy!)? Is it easy to understand?
and as well as its writtability and reliability! hope there&#039;s someone who can answer my question.
tnx alot.</description>
		<content:encoded><![CDATA[<p>can anyone tell me about the readability of this language(groovy!)? Is it easy to understand?<br />
and as well as its writtability and reliability! hope there&#8217;s someone who can answer my question.<br />
tnx alot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3518</link>
		<dc:creator>James</dc:creator>
		<pubDate>Fri, 25 Apr 2008 07:32:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3518</guid>
		<description>I buried the lead... this comment is about mixed Java Groovy runtime compiling from a single file...   too lazy to reformat so it starts with lead. 

---

Groovy vs... 

I have been a bit surprised at how often Groovy performance is compared to Java.  That&#039;s just not a comparison that ever occurs to me.  I wouldn&#039;t expect Groovy to compete with Java itself, that seems silly.   However, I would like it to compete, not win just compete, with other &quot;scripting&quot; options out there.  Almost exclusively what I care about is how Groovy compares to Perl, Python, and Ruby (and not JRuby, etc.), because those are the languages my colleagues use, and those are the things they are going to compare Groovy to.   If I hand them a Groovy script, and they run it, and it&#039;s obviously abysmal, I loose credibility, which is very expensive in my profession.   &quot;James is that flake who uses that dog slow Groovy&quot;.    A lot of people sound like they don&#039;t have to deal with these kinds of pressures, but really it&#039;s exactly this that makes me deeply care about Groovy performance.   I have to be able to give Groovy scripts to my peers with a straight face. 

I just mention this because for me Groovy primarily serves the same role as Perl, Python, and Ruby.  I prefer it over these others because I write a lot of Java code too, and I like to be able to tap into that now and then in the very transparent way that Groovy lets me, as well as the rich set of Java libraries out there.    But by and large, when I&#039;m writing a &quot;script&quot; I want to stay in &quot;script world&quot; and not jump out into the world of compiled applications.   So it&#039;s important to me that my &quot;scripting language&quot; be able to accomplish a fair amount of work on it&#039;s own.  

To this end, I have seen on the developer&#039;s mailing list archive [1]  a nice suggestion.  The idea is to allow Java to be mixed into Groovy in a source file and compiled by the runtime compiler, so that you can run a mixed Java/Groovy text file seamlessly as a single script.   That would be great for me.   Then I can stay in the world of &quot;open a text file, bang out a little program, hand it to someone&quot; that makes up the &quot;scripting&quot; half of my life, but be able to tap into Java without having to completely drop out of &quot;single file script world&quot; and into the world of compiling and packaging jar files, etc.  

Perhaps all my whining about not wanting to compile things sounds like... well, whining.  But Groovy is about convenience for me.  It&#039;s useful to me precisely because I can hack out little fifty line programs in a single file and then just run the thing.    The second that becomes two twenty five line files, with products I have to package, Groovy looses more than half it&#039;s utility to me. 

Anyway, I just wanted to mention it here in the slight hope that some momentum will build behind the mixed-Java Groovy runtime compiling.    I believe it would be fairly easy to implement and it would go a very long way towards answering my own issues with Groovy performance.  

[1]

http://archive.groovy.codehaus.org/dev/197b18fc0802210742y4b943e6budcaa64af3791f899%40mail.gmail.com</description>
		<content:encoded><![CDATA[<p>I buried the lead&#8230; this comment is about mixed Java Groovy runtime compiling from a single file&#8230;   too lazy to reformat so it starts with lead. </p>
<p>&#8212;</p>
<p>Groovy vs&#8230; </p>
<p>I have been a bit surprised at how often Groovy performance is compared to Java.  That&#8217;s just not a comparison that ever occurs to me.  I wouldn&#8217;t expect Groovy to compete with Java itself, that seems silly.   However, I would like it to compete, not win just compete, with other &#8220;scripting&#8221; options out there.  Almost exclusively what I care about is how Groovy compares to Perl, Python, and Ruby (and not JRuby, etc.), because those are the languages my colleagues use, and those are the things they are going to compare Groovy to.   If I hand them a Groovy script, and they run it, and it&#8217;s obviously abysmal, I loose credibility, which is very expensive in my profession.   &#8220;James is that flake who uses that dog slow Groovy&#8221;.    A lot of people sound like they don&#8217;t have to deal with these kinds of pressures, but really it&#8217;s exactly this that makes me deeply care about Groovy performance.   I have to be able to give Groovy scripts to my peers with a straight face. </p>
<p>I just mention this because for me Groovy primarily serves the same role as Perl, Python, and Ruby.  I prefer it over these others because I write a lot of Java code too, and I like to be able to tap into that now and then in the very transparent way that Groovy lets me, as well as the rich set of Java libraries out there.    But by and large, when I&#8217;m writing a &#8220;script&#8221; I want to stay in &#8220;script world&#8221; and not jump out into the world of compiled applications.   So it&#8217;s important to me that my &#8220;scripting language&#8221; be able to accomplish a fair amount of work on it&#8217;s own.  </p>
<p>To this end, I have seen on the developer&#8217;s mailing list archive [1]  a nice suggestion.  The idea is to allow Java to be mixed into Groovy in a source file and compiled by the runtime compiler, so that you can run a mixed Java/Groovy text file seamlessly as a single script.   That would be great for me.   Then I can stay in the world of &#8220;open a text file, bang out a little program, hand it to someone&#8221; that makes up the &#8220;scripting&#8221; half of my life, but be able to tap into Java without having to completely drop out of &#8220;single file script world&#8221; and into the world of compiling and packaging jar files, etc.  </p>
<p>Perhaps all my whining about not wanting to compile things sounds like&#8230; well, whining.  But Groovy is about convenience for me.  It&#8217;s useful to me precisely because I can hack out little fifty line programs in a single file and then just run the thing.    The second that becomes two twenty five line files, with products I have to package, Groovy looses more than half it&#8217;s utility to me. </p>
<p>Anyway, I just wanted to mention it here in the slight hope that some momentum will build behind the mixed-Java Groovy runtime compiling.    I believe it would be fairly easy to implement and it would go a very long way towards answering my own issues with Groovy performance.  </p>
<p>[1]</p>
<p><a href="http://archive.groovy.codehaus.org/dev/197b18fc0802210742y4b943e6budcaa64af3791f899%40mail.gmail.com" rel="nofollow">http://archive.groovy.codehaus.org/dev/197b18fc0802210742y4b943e6budcaa64af3791f899%40mail.gmail.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: devdanke</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3494</link>
		<dc:creator>devdanke</dc:creator>
		<pubDate>Thu, 17 Apr 2008 09:50:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3494</guid>
		<description>This Groovy performance discussion helped to me.  I&#039;m a Java programmer, but looking for simpler options, such as J/Ruby, PHP, and Groovy etc. for prototyping and personal projects.  I hope someday my projects become popular enough so that I&#039;ll have to worry about performance and scalability issues:-)

Despite comments from several posters, that performance isn&#039;t important, it is.  Everyone likes a snappy application.  Lack of snappiness is one reason Java failed to become anyone&#039;s GUI of choice.  Sun&#039;s server-side corporate group-think never grasped this.  

Think of the top 10 to 20 most popular GUI applications used by non developers.  After 10+ years of Java, only a small fraction of them are written in Java.  Groovy will fail too if it isn&#039;t snappy and competitive in performance.  

Twice before I&#039;ve tried to get into Groovy as a command-line scripting language alternative to bash, Ruby, and Python.  Each time Groovy&#039;s sluggish performance made me stop using it.  As of now, it can&#039;t compete on the command-line with its peers. 

A slow performing language, compared to it&#039;s other dynamic language peers, will in my opinion, remain a toy, hobby only language.   That&#039;s not the kind of language I want to invest my time learning.

So I&#039;m pleased to hear that Groovy developers do value performance and are working on this issue.  (Thank you Groovy devs! )  

Now I&#039;d like to comment on the emotional undertone of some comments above.  I feel that Daniel Spiewak has done Groovy a service with his blog about its performance.  To me Spiewak doesn&#039;t come off as an overly biased proponent of another language out to slam Groovy.  Yet, that is the feeling I get when reading Graeme Rocher&#039;s comments to Spiewak.   

Attacking Groovy critics is unwise and will drive away people considering the language.  Nobody wants to be part of a community of mean spirited people.  It&#039;s one reason for Microsoft&#039;s lack of popularity with many developers.  

Groovy is in a difficult competition for developer hearts and minds with J/Ruby, J/Python, PHP, and Scala (and more language choices appear all the time).  I suggest that if Rocher has a hard time welcoming and engaging Groovy critics in a positive way, especially thoughtful ones like Spiewak, then he should allow other Groovy community members, with better PR and relating skills, to do it instead.</description>
		<content:encoded><![CDATA[<p>This Groovy performance discussion helped to me.  I&#8217;m a Java programmer, but looking for simpler options, such as J/Ruby, PHP, and Groovy etc. for prototyping and personal projects.  I hope someday my projects become popular enough so that I&#8217;ll have to worry about performance and scalability issues:-)</p>
<p>Despite comments from several posters, that performance isn&#8217;t important, it is.  Everyone likes a snappy application.  Lack of snappiness is one reason Java failed to become anyone&#8217;s GUI of choice.  Sun&#8217;s server-side corporate group-think never grasped this.  </p>
<p>Think of the top 10 to 20 most popular GUI applications used by non developers.  After 10+ years of Java, only a small fraction of them are written in Java.  Groovy will fail too if it isn&#8217;t snappy and competitive in performance.  </p>
<p>Twice before I&#8217;ve tried to get into Groovy as a command-line scripting language alternative to bash, Ruby, and Python.  Each time Groovy&#8217;s sluggish performance made me stop using it.  As of now, it can&#8217;t compete on the command-line with its peers. </p>
<p>A slow performing language, compared to it&#8217;s other dynamic language peers, will in my opinion, remain a toy, hobby only language.   That&#8217;s not the kind of language I want to invest my time learning.</p>
<p>So I&#8217;m pleased to hear that Groovy developers do value performance and are working on this issue.  (Thank you Groovy devs! )  </p>
<p>Now I&#8217;d like to comment on the emotional undertone of some comments above.  I feel that Daniel Spiewak has done Groovy a service with his blog about its performance.  To me Spiewak doesn&#8217;t come off as an overly biased proponent of another language out to slam Groovy.  Yet, that is the feeling I get when reading Graeme Rocher&#8217;s comments to Spiewak.   </p>
<p>Attacking Groovy critics is unwise and will drive away people considering the language.  Nobody wants to be part of a community of mean spirited people.  It&#8217;s one reason for Microsoft&#8217;s lack of popularity with many developers.  </p>
<p>Groovy is in a difficult competition for developer hearts and minds with J/Ruby, J/Python, PHP, and Scala (and more language choices appear all the time).  I suggest that if Rocher has a hard time welcoming and engaging Groovy critics in a positive way, especially thoughtful ones like Spiewak, then he should allow other Groovy community members, with better PR and relating skills, to do it instead.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Isaac Gouy</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3459</link>
		<dc:creator>Isaac Gouy</dc:creator>
		<pubDate>Fri, 11 Apr 2008 19:39:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3459</guid>
		<description>&gt; As Grant has pointed out, performance is greatly improved in recent releases.

&quot;The Groovy 1.5.4 stable release is the latest release. No milestone releases for the next version of Groovy have yet been released.&quot; http://groovy.codehaus.org/Download

The ‘-server’ tag /is used/ for the benchmarks game measurements.</description>
		<content:encoded><![CDATA[<p>&gt; As Grant has pointed out, performance is greatly improved in recent releases.</p>
<p>&#8220;The Groovy 1.5.4 stable release is the latest release. No milestone releases for the next version of Groovy have yet been released.&#8221; <a href="http://groovy.codehaus.org/Download" rel="nofollow">http://groovy.codehaus.org/Download</a></p>
<p>The ‘-server’ tag /is used/ for the benchmarks game measurements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3421</link>
		<dc:creator>James</dc:creator>
		<pubDate>Mon, 07 Apr 2008 20:13:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3421</guid>
		<description>Grant, 

I guess I can do that by continuing to drop Java .jar files into the groovy lib directory for my internal customers, and package up a .jar for external customers.    So maybe I&#039;m fretting overmuch about a small thing.  I&#039;m just hyper sensitive to the anti-Java skepticism of my colleagues, so I&#039;m always trying to minimize the perceived difference in usability.   

James</description>
		<content:encoded><![CDATA[<p>Grant, </p>
<p>I guess I can do that by continuing to drop Java .jar files into the groovy lib directory for my internal customers, and package up a .jar for external customers.    So maybe I&#8217;m fretting overmuch about a small thing.  I&#8217;m just hyper sensitive to the anti-Java skepticism of my colleagues, so I&#8217;m always trying to minimize the perceived difference in usability.   </p>
<p>James</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3420</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Mon, 07 Apr 2008 20:12:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3420</guid>
		<description>To be honest, James, Groovy sounds perfect for what you&#039;re doing.  As Grant has pointed out, performance is greatly improved in recent releases.  More than that, the integration with Java is seamless, so it should fit right in with your code.

Since you already have to package your Java application to look like a normal command line app, Groovy really isn&#039;t going to add to that overhead.  I assume you&#039;re either using a wrapper script or cross-compilation (using GCJ or similar).  With the wrapper, you can just add Groovy to whatever you&#039;re already doing for packaging and things should work perfectly.  If you&#039;re cross-compiling, things get a little hairier, but not too much so.  The Groovy compiler produces bytecode, so GCJ should be able to consume that as easily as it does any regular Java artifact.</description>
		<content:encoded><![CDATA[<p>To be honest, James, Groovy sounds perfect for what you&#8217;re doing.  As Grant has pointed out, performance is greatly improved in recent releases.  More than that, the integration with Java is seamless, so it should fit right in with your code.</p>
<p>Since you already have to package your Java application to look like a normal command line app, Groovy really isn&#8217;t going to add to that overhead.  I assume you&#8217;re either using a wrapper script or cross-compilation (using GCJ or similar).  With the wrapper, you can just add Groovy to whatever you&#8217;re already doing for packaging and things should work perfectly.  If you&#8217;re cross-compiling, things get a little hairier, but not too much so.  The Groovy compiler produces bytecode, so GCJ should be able to consume that as easily as it does any regular Java artifact.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3419</link>
		<dc:creator>James</dc:creator>
		<pubDate>Mon, 07 Apr 2008 20:08:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3419</guid>
		<description>Grant,

Why not make it a jar file?  Well, that should be a perfectly reasonable option, but alas the world isn&#039;t perfectly reasonable.   My colleagues and clients and, importantly, bosses,  are often biologists who know some Perl but not much more.   For reasons that are obscure to me, Java has gotten a bad reputation among this group.  The biologists who write the checks just want to get a paper out about the genetic causes of epilepsy or something,  and so they don&#039;t care about the software at all, per se, just the final result.  I&#039;m just guessing, but I expect that Java got a bad rap among this group because Java programmers tended to over engineer their assignments.    Whatever the case,  I&#039;m always fighting an uphill battle to use non-Perl or non-C tools.    So, as much as possible, I&#039;d prefer not to draw attention to the fact that I&#039;m using Java based technology.   I&#039;d really rather not remind them of the fact every time they run James&#039; software.  &quot;Oh, great, it&#039;s one of Jame&#039;s jar files... how do I run that again?&quot;   I&#039;d like to be able to give them a file that they just run like they are used to, like a Perl, Python, Ruby, or even C program.   You want something to find splice sites?  Sure, here it is:

findSpliceSites  input.fa  splice.out 

It&#039;s all a bit silly, I know.  I mean, I REALLY know.   I have to live with Ph.D&#039;s who act as though remembering to do &quot;java -jar&quot; to run a jar file will overtax their abilities.   It&#039;s a bit absurd and very frustrating, but no less real for that.    I strongly suspect that I&#039;m not the only person who works in an environment where Java&#039;s clunky command line packaging is a liability.   One of my hopes for Groovy was to smooth over this prejudice, to write little Groovy-only scripts for a lot of the little programs I have to generate every day.   That&#039;ll only work, though, if the Groovy script isn&#039;t grossly slower than they are expecting.</description>
		<content:encoded><![CDATA[<p>Grant,</p>
<p>Why not make it a jar file?  Well, that should be a perfectly reasonable option, but alas the world isn&#8217;t perfectly reasonable.   My colleagues and clients and, importantly, bosses,  are often biologists who know some Perl but not much more.   For reasons that are obscure to me, Java has gotten a bad reputation among this group.  The biologists who write the checks just want to get a paper out about the genetic causes of epilepsy or something,  and so they don&#8217;t care about the software at all, per se, just the final result.  I&#8217;m just guessing, but I expect that Java got a bad rap among this group because Java programmers tended to over engineer their assignments.    Whatever the case,  I&#8217;m always fighting an uphill battle to use non-Perl or non-C tools.    So, as much as possible, I&#8217;d prefer not to draw attention to the fact that I&#8217;m using Java based technology.   I&#8217;d really rather not remind them of the fact every time they run James&#8217; software.  &#8220;Oh, great, it&#8217;s one of Jame&#8217;s jar files&#8230; how do I run that again?&#8221;   I&#8217;d like to be able to give them a file that they just run like they are used to, like a Perl, Python, Ruby, or even C program.   You want something to find splice sites?  Sure, here it is:</p>
<p>findSpliceSites  input.fa  splice.out </p>
<p>It&#8217;s all a bit silly, I know.  I mean, I REALLY know.   I have to live with Ph.D&#8217;s who act as though remembering to do &#8220;java -jar&#8221; to run a jar file will overtax their abilities.   It&#8217;s a bit absurd and very frustrating, but no less real for that.    I strongly suspect that I&#8217;m not the only person who works in an environment where Java&#8217;s clunky command line packaging is a liability.   One of my hopes for Groovy was to smooth over this prejudice, to write little Groovy-only scripts for a lot of the little programs I have to generate every day.   That&#8217;ll only work, though, if the Groovy script isn&#8217;t grossly slower than they are expecting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Grant</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3417</link>
		<dc:creator>Grant</dc:creator>
		<pubDate>Mon, 07 Apr 2008 18:52:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3417</guid>
		<description>James, my last comment was in response to Daniel, not you. You&#039;ll probably be happy to hear that Groovy 1.6 beta is about twice as fast as 1.5.4 on my system, putting it ahead of the Ruby implementations (JRuby 1.1 and Ruby 1.9) that I&#039;ve tried on my PC. I don&#039;t know about Python, though.

Also, if you prefer just to give folks one file, why not make it a .jar with combined Java and Groovy?</description>
		<content:encoded><![CDATA[<p>James, my last comment was in response to Daniel, not you. You&#8217;ll probably be happy to hear that Groovy 1.6 beta is about twice as fast as 1.5.4 on my system, putting it ahead of the Ruby implementations (JRuby 1.1 and Ruby 1.9) that I&#8217;ve tried on my PC. I don&#8217;t know about Python, though.</p>
<p>Also, if you prefer just to give folks one file, why not make it a .jar with combined Java and Groovy?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Grant</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3415</link>
		<dc:creator>Grant</dc:creator>
		<pubDate>Mon, 07 Apr 2008 16:29:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3415</guid>
		<description>The fact is that Groovy is simply not as slow as you are making it out to be. For starters, almost all of the benchmarks I&#039;ve seen are done without the &#039;-server&#039; tag, which makes it run much faster. Also, if you look, you&#039;ll notice those original benchmarks were done in Groovy 1.0.

For instance,
&quot;groovy -server ray 8 64&quot; takes 43.859s (About 100 times slower than Java on my system)
&quot;groovy ray 8 64&quot; takes 115.735s

In the binartrees test,
&quot;groovy -server binarytrees 16&quot; takes 41.047s
&quot;groovy binarytrees 16&quot; takes 126.000s
Ruby 1.9: &quot;ruby binarytrees.rb 16&quot; 55.891s
JRuby 1.1: &quot;jruby binarytrees.rb 16&quot; takes 60.184s
JRuby 1.1: &quot;jruby -J-server binarytrees.rb 16&quot; takes 33.047s

I&#039;ve got a zillion benchmarks on my system, because certain bloggers had me convinced it was unusably slow, and so wasn&#039;t suitable for production :P Fortunately I bothered to run some tests on my own, and found out otherwise.

From the looks of things, Groovy 1.6 just may beat out JRuby 1.1 as the fastest dynamic language which integrates easily with Java.</description>
		<content:encoded><![CDATA[<p>The fact is that Groovy is simply not as slow as you are making it out to be. For starters, almost all of the benchmarks I&#8217;ve seen are done without the &#8216;-server&#8217; tag, which makes it run much faster. Also, if you look, you&#8217;ll notice those original benchmarks were done in Groovy 1.0.</p>
<p>For instance,<br />
&#8220;groovy -server ray 8 64&#8243; takes 43.859s (About 100 times slower than Java on my system)<br />
&#8220;groovy ray 8 64&#8243; takes 115.735s</p>
<p>In the binartrees test,<br />
&#8220;groovy -server binarytrees 16&#8243; takes 41.047s<br />
&#8220;groovy binarytrees 16&#8243; takes 126.000s<br />
Ruby 1.9: &#8220;ruby binarytrees.rb 16&#8243; 55.891s<br />
JRuby 1.1: &#8220;jruby binarytrees.rb 16&#8243; takes 60.184s<br />
JRuby 1.1: &#8220;jruby -J-server binarytrees.rb 16&#8243; takes 33.047s</p>
<p>I&#8217;ve got a zillion benchmarks on my system, because certain bloggers had me convinced it was unusably slow, and so wasn&#8217;t suitable for production <img src='http://www.codecommit.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Fortunately I bothered to run some tests on my own, and found out otherwise.</p>
<p>From the looks of things, Groovy 1.6 just may beat out JRuby 1.1 as the fastest dynamic language which integrates easily with Java.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective/comment-page-1#comment-3405</link>
		<dc:creator>James</dc:creator>
		<pubDate>Mon, 07 Apr 2008 05:51:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective#comment-3405</guid>
		<description>I&#039;m a big fan of Groovy, but the top ten features I want out of the next few releases of Groovy are: performance, performance, performance, performance, performance,performance,performance,performance, performance, and performance.  

I work in bioinformatics where Perl is king.  Perl works well but I hate Perl.  Every night I pray to the language gods that I will never have to write another line of Perl.  Since I&#039;m fairly fond of Java Groovy looked like the answer to my prayer.    It really is the ideal language for my purposes except.... it&#039;s dog slow.    I could, and still might, learn Python or Ruby as a replacement for Perl, but now that I&#039;ve seen Groovy I really don&#039;t want to.  I want Groovy to work for me.  I want the Groovish syntax, and I want to be able to seamlessly leverage all the Java libraries out there, including my own Java code base.   All of the dynamic scripting languages are, of course,  slow compared to C or even Java, and that&#039;s fine.   But for me, the standard for an acceptable scripting language is Perl.   I can use a language that is 2x or maybe even 3x slower than Perl on tasks I commonly perform,  but I can&#039;t use a language that is 10x or 20x slower than Perl.    The data I operate on varies from a few mega-bytes to a few gigabytes.   It&#039;s a tremendous difference in the amount of work I can get done if it takes 10 minutes instead of 30 seconds to process one data file.      

Speed is not just about the actual time it takes to do something, though.   It&#039;s also sociological.  It is hard enough to convince colleagues, who are used to running Perl programs or C programs, to even accept something written in an obscure language with a cute name like Groovy.  It becomes impossible if the script you give them also runs obviously, and glaringly, slow.   If you try to remedy this by sending along some Java classes to do the heavy lifting, then you enter packaging hell.   I really want to hand people a single file to solve their problem.  Or rather, that&#039;s what my customers, other scientists, demand of me.  

It is, of course, one of the best features of Groovy that it&#039;s not just easy, but totally transparent, to mix in Java classes, and in practice I do that a lot.   But very quickly it ceases to be a Groovy program in any meaningful sense.  I start to feel silly even using Groovy when all my Groovy script does is create a series of Java objects and invoke Java methods on those objects. 

I find it hopeful that the performance of Groovy seems to vary wildly between different tasks.  That makes me think it has some quirky bottlenecks that can be ironed out.   For example, on the computer language shootout... er... benchmarks game [1], I was able to write the regex-dna benchmark so that it took 15 seconds, which compares well enough for me with Python&#039;s 6 seconds, or Ruby&#039;s 7 seconds.   However, I was unable to come up with a Groovy implementation of the reverse-complement benchmark that was anywhere in the ball park of being competitive (the one someone else submitted is 9000x slower than Perl !!  I can beat that, but all my efforts have been too poor still to bother submitting).    These tasks, regex-dna, reverse-complement, k-nucleotide, are not just arbitrary benchmarks to me either.   These represent very good approximations of the bread and butter of my daily work.   

I&#039;m not commenting to rag on the Groovy developers.   I&#039;m a big Groovy fan.  I want to make Groovy the next bioinformatics language of choice.  I am, moreover, very impressed with what the Groovy team has done so far and rather quickly.   I just want to add my voice to the chorus saying, &quot;Performance matters, it matters a lot, and even us fanatics can&#039;t ignore it&quot;.    I want to do whatever I can to put performance on the front burner of their future efforts.  


[1] http://shootout.alioth.debian.org/gp4sandbox/</description>
		<content:encoded><![CDATA[<p>I&#8217;m a big fan of Groovy, but the top ten features I want out of the next few releases of Groovy are: performance, performance, performance, performance, performance,performance,performance,performance, performance, and performance.  </p>
<p>I work in bioinformatics where Perl is king.  Perl works well but I hate Perl.  Every night I pray to the language gods that I will never have to write another line of Perl.  Since I&#8217;m fairly fond of Java Groovy looked like the answer to my prayer.    It really is the ideal language for my purposes except&#8230;. it&#8217;s dog slow.    I could, and still might, learn Python or Ruby as a replacement for Perl, but now that I&#8217;ve seen Groovy I really don&#8217;t want to.  I want Groovy to work for me.  I want the Groovish syntax, and I want to be able to seamlessly leverage all the Java libraries out there, including my own Java code base.   All of the dynamic scripting languages are, of course,  slow compared to C or even Java, and that&#8217;s fine.   But for me, the standard for an acceptable scripting language is Perl.   I can use a language that is 2x or maybe even 3x slower than Perl on tasks I commonly perform,  but I can&#8217;t use a language that is 10x or 20x slower than Perl.    The data I operate on varies from a few mega-bytes to a few gigabytes.   It&#8217;s a tremendous difference in the amount of work I can get done if it takes 10 minutes instead of 30 seconds to process one data file.      </p>
<p>Speed is not just about the actual time it takes to do something, though.   It&#8217;s also sociological.  It is hard enough to convince colleagues, who are used to running Perl programs or C programs, to even accept something written in an obscure language with a cute name like Groovy.  It becomes impossible if the script you give them also runs obviously, and glaringly, slow.   If you try to remedy this by sending along some Java classes to do the heavy lifting, then you enter packaging hell.   I really want to hand people a single file to solve their problem.  Or rather, that&#8217;s what my customers, other scientists, demand of me.  </p>
<p>It is, of course, one of the best features of Groovy that it&#8217;s not just easy, but totally transparent, to mix in Java classes, and in practice I do that a lot.   But very quickly it ceases to be a Groovy program in any meaningful sense.  I start to feel silly even using Groovy when all my Groovy script does is create a series of Java objects and invoke Java methods on those objects. </p>
<p>I find it hopeful that the performance of Groovy seems to vary wildly between different tasks.  That makes me think it has some quirky bottlenecks that can be ironed out.   For example, on the computer language shootout&#8230; er&#8230; benchmarks game [1], I was able to write the regex-dna benchmark so that it took 15 seconds, which compares well enough for me with Python&#8217;s 6 seconds, or Ruby&#8217;s 7 seconds.   However, I was unable to come up with a Groovy implementation of the reverse-complement benchmark that was anywhere in the ball park of being competitive (the one someone else submitted is 9000x slower than Perl !!  I can beat that, but all my efforts have been too poor still to bother submitting).    These tasks, regex-dna, reverse-complement, k-nucleotide, are not just arbitrary benchmarks to me either.   These represent very good approximations of the bread and butter of my daily work.   </p>
<p>I&#8217;m not commenting to rag on the Groovy developers.   I&#8217;m a big Groovy fan.  I want to make Groovy the next bioinformatics language of choice.  I am, moreover, very impressed with what the Groovy team has done so far and rather quickly.   I just want to add my voice to the chorus saying, &#8220;Performance matters, it matters a lot, and even us fanatics can&#8217;t ignore it&#8221;.    I want to do whatever I can to put performance on the front burner of their future efforts.  </p>
<p>[1] <a href="http://shootout.alioth.debian.org/gp4sandbox/" rel="nofollow">http://shootout.alioth.debian.org/gp4sandbox/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
