[#7500] Re: how to introduce reference objects into ruby — "Geert Fannes" <Geert.Fannes@...>

The problem with the code you sent is that you have to go through ALL

16 messages 2006/03/10

[#7553] "not" operator used in expression that is a method parameter can generate syntax error — noreply@...

Bugs item #3843, was opened at 2006-03-15 22:09

27 messages 2006/03/16
[#7554] Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error — nobu@... 2006/03/16

Hi,

[#7557] Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error — 卜部昌平 <shyouhei@...> 2006/03/16

Nobu, you are not answering to the question.... You have to unveil why

[#7559] Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error — Yukihiro Matsumoto <matz@...> 2006/03/16

Hi,

[#7560] Rant about keyword logical operators was : (Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error) — "Zev Blut" <rubyzbibd@...> 2006/03/16

Hello,

[#7565] Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error — mathew <meta@...> 2006/03/16

Yukihiro Matsumoto wrote:

[#7566] Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error — "Brian Mitchell" <binary42@...> 2006/03/16

On 3/16/06, mathew <meta@pobox.com> wrote:

[#7567] Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error — mathew <meta@...> 2006/03/16

Brian Mitchell wrote:

[#7568] Re: [ ruby-Bugs-3843 ] "not" operator used in expression that is a method parameter can generate syntax error — "Brian Mitchell" <binary42@...> 2006/03/16

On 3/16/06, mathew <meta@pobox.com> wrote:

[#7614] PATCH: A subclassable Pathname — "Evan Phoenix" <evanwebb@...>

A simply change (changing all references of "Pathname.new" to

19 messages 2006/03/27
[#7618] Re: PATCH: A subclassable Pathname — Tanaka Akira <akr@...17n.org> 2006/03/27

In article <92f5f81d0603262350k796fe48fp2224b9f2108ac507@mail.gmail.com>,

[#7619] Re: PATCH: A subclassable Pathname — "Evan Phoenix" <evan@...> 2006/03/27

Quite right on the .glob and .getwd. I guess the tests don't test hit

[#7620] Re: PATCH: A subclassable Pathname — Tanaka Akira <akr@...17n.org> 2006/03/27

In article <92f5f81d0603270903g2fb02244i6a395be708dfffa3@mail.gmail.com>,

Re: how to introduce reference objects into ruby

From: "Geert Fannes" <Geert.Fannes@...>
Date: 2006-03-13 19:26:18 UTC
List: ruby-core #7535
>I think you are saying that the rows of your matrix contain the value, 
>and the columns contain references (either pointers or indices) to the 
>row values.  Is that correct (modulo having rows/columns reversed)?
>
>I'm still unclear why this solution wouldn't work in Ruby.

I could indeed store all the elements in a Hash of Hashes (the columns). I can then store the rows as a Hash of Arrays and lookup each row element in the columns:

def getRow(i)
  row=@rows[i].collect{|j|@columns[j][i]}
end

On the aesthetic side, this is an assymetric solution, but that is also the case in my C implementation.

On the practical side, this needs much more Hash lookups than if we had the needed values also in the Hash of Hashes for the rows.

To implement something that has the same complexity as the C implementation, I would need to store the columns as a Hash of Hashes with instead of a Float value, an index into a large Array that would contain ALL the matrix elements. The rows can then similarily be stored as a Hash of Hashes of indices into the very same Array. Now everything is symmetric and adequately fast, but I still believe things would be more elegant with a Reference object. Especially when you start deleting elements: deleting them from the Hash of Hashes is no problem, but removing them from the Array is less efficient. The C counterpart that handles deleting and adding from and to this Array is the kernel its memory manager, which is more suitable for this than Ruby's Array object, but has also it's overhead. For this reason, I have two implementations in C. One that uses regular pointers and AVL balanced trees (similar to the Hash object) suffers from linux it's memory manager. The other implementation uses that approach with a common array as explained above, but has therefore the same problems with deletion of elements.

Greetings,
Geert.

In This Thread