[#10209] Market for XML Web stuff — Matt Sergeant <matt@...>

I'm trying to get a handle on what the size of the market for AxKit would be

15 messages 2001/02/01

[#10238] RFC: RubyVM (long) — Robert Feldt <feldt@...>

Hi,

20 messages 2001/02/01
[#10364] Re: RFC: RubyVM (long) — Mathieu Bouchard <matju@...> 2001/02/05

[#10708] Suggestion for threading model — Stephen White <spwhite@...>

I've been playing around with multi-threading. I notice that there are

11 messages 2001/02/11

[#10853] Re: RubyChangeRequest #U002: new proper name for Hash#indexes, Array#indexes — "Mike Wilson" <wmwilson01@...>

10 messages 2001/02/14

[#11037] to_s and << — "Brent Rowland" <tarod@...>

list = [1, 2.3, 'four', false]

15 messages 2001/02/18

[#11094] Re: Summary: RCR #U002 - proper new name fo r indexes — Aleksi Niemel<aleksi.niemela@...>

> On Mon, 19 Feb 2001, Yukihiro Matsumoto wrote:

12 messages 2001/02/19

[#11131] Re: Summary: RCR #U002 - proper new name fo r indexes — "Conrad Schneiker" <schneik@...>

Robert Feldt wrote:

10 messages 2001/02/19

[#11251] Programming Ruby is now online — Dave Thomas <Dave@...>

36 messages 2001/02/21

[#11469] XML-RPC and KDE — schuerig@... (Michael Schuerig)

23 messages 2001/02/24
[#11490] Re: XML-RPC and KDE — schuerig@... (Michael Schuerig) 2001/02/24

Michael Neumann <neumann@s-direktnet.de> wrote:

[#11491] Negative Reviews for Ruby and Programming Ruby — Jim Freeze <jim@...> 2001/02/24

Hi all:

[#11633] RCR: shortcut for instance variable initialization — Dave Thomas <Dave@...>

13 messages 2001/02/26

[#11652] RE: RCR: shortcut for instance variable initialization — Michael Davis <mdavis@...>

I like it!

14 messages 2001/02/27

[#11700] Starting Once Again — Ron Jeffries <ronjeffries@...>

OK, I'm starting again with Ruby. I'm just assuming that I've

31 messages 2001/02/27
[#11712] RE: Starting Once Again — "Aaron Hinni" <aaron@...> 2001/02/27

> 2. So far I think running under TextPad will be better than running

[#11726] Re: Starting Once Again — Aleksi Niemel<zak@...> 2001/02/28

On Wed, 28 Feb 2001, Aaron Hinni wrote:

[ruby-talk:11739] Comparison Caching

From: "Ben Tilly" <ben_tilly@...>
Date: 2001-02-28 04:52:12 UTC
List: ruby-talk #11739
OK, this is my latest entry in the "solve testing
equality with a recursive data structure" discussion.
Unfortunately on my machine the test suite that others
are using fails miserably after exhausting the stack,
but when I scale it back this seems to be a tad faster.
But note that it is optimized for the case where we
see each object compared to very few others.

I have changed names of methods a little bit.  Feel
free to change them back.  I also did both <=> and
== (but only for arrays).

I tried a caching scheme of hashes of hashes, that
was consistently somewhat slower.  But there are
definitely cases where it would be faster...

Cheers,
Ben

class Object
  def  eq? (other, cache)
    id == other.id ?
      true :
      self == other
  end

  def cmp (other, cache)
    id == other.id ?
      0 :
      self <=> other
  end
end

class SeenCache
  attr :seen

  def initialize
    @seen = Hash.new nil
  end

  def visited? (this, that)
    if @seen[this].nil?
      @seen[this] = [ that ]
    else
      return true if @seen[this].include? that
      @seen[this].push that
    end
    false
  end

end

class Array
  def <=> (other)
    cmp(other, SeenCache.new)
  end

  def cmp (other, cache)
    if (id == other.id or cache.visited? (id, other.id))
      return 0
    else
      other_a = other.to_ary
      min = length < other_a.length ?
        length :
        other_a.length
      for i in 0..(min - 1)
        val = self[i].cmp(other[i], cache)
        return val unless val == 0
      end
      length <=> other_a.length
    end
  end

  def == (other)
    eq? (other, SeenCache.new)
  end

  def eq? (other, cache)
    if (other.kind_of? (Array) and length == other.length)
      if (id != other.id and not cache.visited? (id, other.id))
        for i in 0...(length - 1) do
          return false unless self[i].eq? (other[i], cache)
        end
      end
      return true
    else
      return false
    end
  end

end

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com

In This Thread

Prev Next