[#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:11803] RE: Comparison Caching

From: "Christoph Rippel" <crippel@...>
Date: 2001-02-28 18:44:30 UTC
List: ruby-talk #11803
> From: Ben Tilly [mailto:ben_tilly@hotmail.com]
> Sent: Tuesday, February 27, 2001 08:52 PM
> To: ruby-talk ML
> Subject: [ruby-talk:11739] Comparison Caching
> 
> 
> 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
[...]

As discussed in a private email your and my (optimisitic) algorithm are 
identical(modulo details). My main objection about your current version
is that it depends on the Hash-Hash realization of an ``Idbag'' and does
not abstract this away as an implementation detail. 
In principle a Hash - Hash (of Integer) encoding and the (Sym)Id_pair
encoding are actually more or less identical and in an ideal version 
you would write the whole ID-bag class in C. 
(I appended a version of IdBag based on Hash which is a bit faster on 
my Machine then my original (faster module (Non symetric) IdBag2) version 
- the main reason is that no intermediate IdPair Objects are created - 
I don't know if if Guy's C-implementation does the same thing).  

I also think that your objections towards symmetrization - i.e. swapping
are not valid since they cost very little compared to the reminder division 
invoked in any hashing scheme and running the interpreter it self of course
(in my test it makes virtually non difference if you swap or don't swap - 
even so swapping does not gain anything in the ``examples'') 
- swapping IMO simply feels more robust.
 

Christoph

------------

module IdBag1
class IdBag
def initialize
	@bag = {}
end
attr_accessor :bag
def  sym_pair_include?  a, b 
	if  a < b then
	      if (tmp =@bag[a])
	      	return tmp[b]
	      else
	      	false
	      end
	 else
	  	if (tmp =@bag[b])
	 	      	return tmp[a]
	 	      else
	 	      	false
	      end
	 end
end	 
def  sym_pair_include a, b
	if  a < b then
		if (tmp= @bag[a])
			tmp[b] = true			
		else
			tmp= @bag[a] ={}
			tmp[b] = true
		end
	else
		if (tmp= @bag[b])
			tmp[a] = true
		else
			tmp= @bag[b] ={}
			tmp[a] = true
		end
	end
end
end                        
end

module IdBag2
class IdBag
def initialize
	@bag = {}
end
def  include_pair a, b
	@bag[IdPair.new a.id,b.id] =true
end	
def included_pair? a,b
	@bag.key? (IdPair.new a.id,b.id)
end

private
class IdPair
def initialize l,r
	@l = l; @r = r
end
def hash;	@l end
def eql?(other)
	@r.eql?  (other.r)
end	
protected 
attr_reader :l, :r
end
end                        
end


In This Thread