[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Convention and performance [] versus Array.new

Ryan Hinton

1/27/2006 7:33:00 PM

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!

5 Answers

James Herdman

1/27/2006 7:49:00 PM

0

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

1/27/2006 8:10:00 PM

0

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

1/27/2006 10:55:00 PM

0


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

zakkriner

1/27/2006 11:35:00 PM

0

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?Ruby...
http://www.rubygarden.org/ruby?...
http://www.rubygarden.org/ruby?ExampleDesignPatt...
http://pleac.sourceforge.net/p...

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

1/28/2006 2:59:00 AM

0

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!