Convention and performance [] versus Array.new

R

Ryan Hinton

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!
 
J

James H.

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.
 
R

Ryan Hinton

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!
 
C

Charles Mills

Ryan said:
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
 
Z

Zak Kriner

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?ExampleDesignPatternsInRuby
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
 
R

Ryan Hinton

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!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top