Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Convention and performance [] versus Array.new (http://www.velocityreviews.com/forums/t828153-convention-and-performance-versus-array-new.html)

Ryan Hinton 01-27-2006 07:33 PM

Convention and performance [] versus Array.new
 
Is there any reason to use [] over Array.new or vice versa? Is there a
performance benefit? Is there any convention in this area? What about
{} versus Hash.new?

Thanks!


James H. 01-27-2006 07:49 PM

Re: Convention and performance [] versus Array.new
 
I can't directly answer your question, but something to consider is
that Ruby has *numerous* ways to do the same thing. Just look in the
documentation for the different ways to denote strings. I haven't
tested it, but I tend to think that these options don't differ much in
performance.


Ryan Hinton 01-27-2006 08:10 PM

Re: Convention and performance [] versus Array.new
 
I completely forgot about strings. Any suggestions in that area are
welcome as well.

I am familiar with the Perl approach (whatever that long acronym is) of
having lots of ways to do things. I heard about a study of different
people's Perl code where you actually end up with different dialects.
Beginners can write code fairly easily by using a dialect they are
comfortable with. However, it took a Perl expert to understand code in
someone else's dialect.

As much as convenient, I would like to make my Ruby code readable by
the majority of other Ruby coders (and non-Ruby coders?). So I am
interested in following any good conventions. (Is there a good source
of conventions and idioms for Ruby?). And if I can get a free
performance boost by using a different idiom, I'm all for it.

Thanks!


Charles Mills 01-27-2006 10:54 PM

Re: Convention and performance [] versus Array.new
 

Ryan Hinton wrote:
> Is there any reason to use [] over Array.new or vice versa? Is there a
> performance benefit? Is there any convention in this area? What about
> {} versus Hash.new?
>
> Thanks!


Array.new and Array.[] are pretty much totally different. Same for {}
and Hash.new. I think the convention is to read the docs and use them
where appropriate :)

-Charlie


Zak Kriner 01-27-2006 11:35 PM

Re: Convention and performance [] versus Array.new
 
I wouldn't worry about the performance in your example too much. If you
are worried anyway you can monkey w/ the 'Benchmark' module (the docs,
at www.ruby-doc.org/core, give examples).

maybe something like this maybe?:

require 'benchmark'
puts Benchmark.measure { 100_000.times { Array.new() } }
puts Benchmark.measure { 100_000.times { [] } }

Regarding conventions/idioms, here are just a few links to get you
started, I'm sure there are many more if you look around a bit.
http://www.rubygarden.org/ruby?RubyStyleGuide
http://www.rubygarden.org/ruby?RubyIdioms
http://www.rubygarden.org/ruby?Examp...PatternsInRuby
http://pleac.sourceforge.net/pleac_ruby/

Another good way to learn good ruby coding is to look at well written
ruby code (the ruby core, rails, etc.).

Good luck,
zak


Ryan Hinton 01-28-2006 02:59 AM

Re: Convention and performance [] versus Array.new
 
Thanks for the excellent suggestions. At least on my machine (Pentium
M laptop, 512 MB RAM) Array.new() and Hash.new() take 50% to 100%
longer than [] and {}. Consequently, I will prefer the latter notation
for now. I think I have read most of the pages you referenced, but I
haven't delved into the core or Rails yet. I have kept an eye on the
Ruby quiz, though, from which I've gleaned some good tidbits. Thanks
again!



All times are GMT. The time now is 08:10 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.