[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

David Alan Black <dblack@candle.superlink.net> writes:

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:7371] Re: Ruby performance question

From: "Joseph McDonald" <joe@...>
Date: 2000-12-16 01:54:10 UTC
List: ruby-talk #7371
Very cool David!

I found that a combination of your technique with Dave's technique
to be the fastest:

def dt_readfile 
  h = Hash.new 
  file = File.new("keys") 
  while line = file.gets 
    record = line.chomp!.tr!('=', ',').split(',') 
    h[record.shift] = record.shift until record.empty? 
    # do stuff here... 
    h.clear 
  end 
end 

results:
                  user     system      total        real 
david:        8.750000   0.148438   8.898438 (  9.019113) 
joe:          8.773438   0.109375   8.882812 (  8.944328) 
dt:           6.960938   0.046875   7.007812 (  7.130645) 
orig:        11.304688   0.093750  11.398438 ( 11.776709) 

(dt is the one above).
The above is for 81,000 records of 7 records each totaling
a little over 13MB on a pIII-550.  All keys were unique
(doesn't matter very much since we have that h.clear there...).

I note that if I remove the h.clear in the method above, the
process grows to 52 megs and takes this long to run:
                  user     system      total        real 
dt:          78.132812   0.195312  78.328125 ( 82.569231) 

(that's a total of 81_000 * 7 hash entries...).  Not sure how
good or bad that is...

regards,
-joe



> -----Original Message-----
> From: David Alan Black [mailto:dblack@candle.superlink.net]
> Sent: Friday, December 15, 2000 5:21 PM
> To: ruby-talk ML
> Subject: [ruby-talk:7367] Re: Ruby performance question
> 
> 
> On Sat, 16 Dec 2000, Dave Thomas wrote:
> 
> > OK, this is tacky, and probably not worth it, but it knocks about 15%
> > of the run times on my box, using an 80,000 line input file with 6
> > key/value pairs per line. The idea is simply to avoid creating the
> > intermediate object that contains a single key-value which is then
> > split across the '='. Instead, we assume the input is well-formed and
> > split into the final strings directly.
> > 
> > 
> >      h = Hash.new
> > 
> >      while line = gets
> >        a = line.chomp!.tr!('=', ',').split(',')
> >        0.step(a.size-2, 2) do |i|
> >          h[a[i]] = a[i+1]
> 
> (Oh, for Array#to_h!  Wouldn't: "h = line.to_h" be nice?)
> 
> If the lines are guaranteed to be well-formed, you could also do:
> 
>     while line = gets
>       record = line.chomp!.split(/[,=]/)
>       h[record.shift] = record.shift until record.empty?
>       h.clear
>     end
> 
> which bypasses the tr! phase.  And seems to pick up a bit of time -- a
> quick benchmarking of the three versions, on a file of 20000 lines
> (all right, I'm impatient :-) with six key-value pairs per line, looks
> like this:
> 
>       user     system      total        real
>  13.200000   0.030000  13.230000 ( 13.225895)   # Eric
>  11.200000   0.050000  11.250000 ( 11.242669)   # Dave
>   9.870000   0.040000   9.910000 (  9.918286)   # David
> 
> 
> I wanted to use the reverse/pop (instead of shift) technique that
> Brian Feldman had suggested for interleaving, but I couldn't figure
> out how to get at the key before the value.  
> 
> 
> David
> 
> -- 
> David Alan Black
> home: dblack@candle.superlink.net
> work: blackdav@shu.edu
> Web:  http://pirate.shu.edu/~blackdav
> 
> 

In This Thread