[#6143] — Christophe Poucet <christophe.poucet@...>

Hello,

17 messages 2005/10/04
[#6147] Re: patch.tgz — nobu.nokada@... 2005/10/04

Hi,

[#6199] Kernel rdoc HTML file not being created when rdoc is run on 1.8.3 — James Britt <ruby@...>

When 1.8.3 came out, I grabbed the source and ran rdoc on it. After

9 messages 2005/10/08

[#6251] RubyGems, upstream releases and idempotence of packaging — Mauricio Fern疣dez <mfp@...>

[sorry for the very late reply; I left this message in +postponed and forgot

14 messages 2005/10/12

[#6282] Wilderness: Need Code to invoke ELTS_SHARED response — "Charles E. Thornton" <ruby-core@...>

Testing the My Object Dump and I am trying to cause creation

13 messages 2005/10/14
[#6283] Re: Wilderness: Need Code to invoke ELTS_SHARED response — Mauricio Fern疣dez <mfp@...> 2005/10/14

On Fri, Oct 14, 2005 at 05:04:59PM +0900, Charles E. Thornton wrote:

[#6288] Re: Wilderness: Need Code to invoke ELTS_SHARED response — "Charles E. Thornton" <ruby-core@...> 2005/10/14

Mauricio Fern疣dez wrote:

[#6365] Time for built-in Rational and Complex classes? — Gavin Sinclair <gsinclair@...>

There has been some support for, but no comment on, RCR #260 ("Make

12 messages 2005/10/24
[#6366] Re: Time for built-in Rational and Complex classes? — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/24

On Mon, 24 Oct 2005, Gavin Sinclair wrote:

[#6405] Re: [PATCH] Pathname.exists?() — "Berger, Daniel" <Daniel.Berger@...>

12 messages 2005/10/25
[#6406] Re: [PATCH] Pathname.exists?() — TRANS <transfire@...> 2005/10/25

On 10/25/05, Berger, Daniel <Daniel.Berger@qwest.com> wrote:

[#6408] Re: [PATCH] Pathname.exists?() — Gavin Sinclair <gsinclair@...> 2005/10/25

On 10/26/05, TRANS <transfire@gmail.com> wrote:

[#6442] Wilderness: I Have formatted README.EXT into an HTML Document — "Charles E. Thornton" <ruby-core@...>

I have taken README.EXT (English Version Only) and have reformatted

14 messages 2005/10/27

[#6469] csv.rb a start on refactoring. — Hugh Sasse <hgs@...>

For a database application I found using CSV to be rather slow.

50 messages 2005/10/28
[#6470] Re: csv.rb a start on refactoring. — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/28

[#6471] Re: csv.rb a start on refactoring. — James Edward Gray II <james@...> 2005/10/28

On Oct 28, 2005, at 8:53 AM, Ara.T.Howard wrote:

[#6474] Re: csv.rb a start on refactoring. — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/28

On Fri, 28 Oct 2005, James Edward Gray II wrote:

[#6484] Re: csv.rb a start on refactoring. — James Edward Gray II <james@...> 2005/10/29

On Oct 28, 2005, at 9:58 AM, Ara.T.Howard wrote:

[#6485] Re: csv.rb a start on refactoring. — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/29

On Sat, 29 Oct 2005, James Edward Gray II wrote:

[#6486] Re: csv.rb a start on refactoring. — James Edward Gray II <james@...> 2005/10/29

On Oct 28, 2005, at 8:25 PM, Ara.T.Howard wrote:

[#6487] Re: csv.rb a start on refactoring. — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/29

On Sat, 29 Oct 2005, James Edward Gray II wrote:

[#6491] Re: csv.rb a start on refactoring. — James Edward Gray II <james@...> 2005/10/29

On Oct 28, 2005, at 8:43 PM, Ara.T.Howard wrote:

[#6493] Re: csv.rb a start on refactoring. — James Edward Gray II <james@...> 2005/10/29

On Oct 28, 2005, at 10:06 PM, James Edward Gray II wrote:

[#6496] Re: csv.rb a start on refactoring. — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/29

On Sun, 30 Oct 2005, James Edward Gray II wrote:

[#6502] Re: csv.rb a start on refactoring. — James Edward Gray II <james@...> 2005/10/30

On Oct 29, 2005, at 12:11 PM, Ara.T.Howard wrote:

[#6505] Re: csv.rb a start on refactoring. — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/30

On Mon, 31 Oct 2005, James Edward Gray II wrote:

[#6511] Planning FasterCSV (was Re: csv.rb a start on refactoring.) — James Edward Gray II <james@...> 2005/10/30

I've decided to create a FasterCSV library, based on the code we

[#6516] Re: Planning FasterCSV (was Re: csv.rb a start on refactoring.) — "Ara.T.Howard" <Ara.T.Howard@...> 2005/10/31

On Mon, 31 Oct 2005, James Edward Gray II wrote:

[#6518] Re: Planning FasterCSV (was Re: csv.rb a start on refactoring.) — "NAKAMURA, Hiroshi" <nakahiro@...> 2005/10/31

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

Re: Concerning shared flag

From: "Christophe Poucet" <christophe.poucet@...>
Date: 2005-10-05 16:57:53 UTC
List: ruby-core #6176
I have taken a different approach that works without changing the ruby
interpreter although I'm not happy with the implementation as I have to add
an extra VALUE field.

struct RVarArrayData {
  long len;
  long capa;
  VALUE shared;
  VARVALUE * ptr;
};

If shared != Qnil then it is a shared one, otherwise it's not shared.  Had I
been able to use the flag then the overhead would drop by 4 bytes per object
(given that shared and capa would then be in a union).  For the rest I keep
the original sharing logic.  And then I will look at your patch and use this
patch for vararray as well.

With regards to the gc being more generalized, one nice thing would be that
it would no longer need to be specialized for Array and String instead just
treat these like T_DATA (of course with the current implementation of Tdata
this would mean that you'd have an extra pointer access, but I'm sure this
is a separate problem that could be handled as well.)

With regards,
Christophe

-----Original Message-----
From: Eric Mahurin [mailto:eric_mahurin@yahoo.com] 
Sent: Wednesday, October 05, 2005 6:03 PM
To: ruby-core@ruby-lang.org
Subject: Re: Concerning shared flag

Not sure if you are aware or not, there are some serious
performance (run-time and memory) issues with element sharing
in the current ruby.  Try any method that takes a small slice
of a large array and then later (even after the small slice is
GCed) modify the large array.  The modify will cause a copy of
the large array and the small slice will continue to reference
the original large array.  You can see how this could cause
serious run-time and memory penalties.

I've done a patch to fix this plus do other speedups.  See the
thread "another array patch - massive performance boosts".

I'd suggest you not do element sharing in your custom class
until this is resolved.

I agree that it would be nice if the GC was more generalized to
let the class handle these special cases (element sharing)
instead of embedding this code in gc.c.

--- Christophe Poucet <christophe.poucet@gmail.com> wrote:

> Hello,
> 
> I'm trying to build an object that behaves just like Array in
> c. However
> there seems to be one stumbling block. I looked at the
> garbage collector and
> there is no special case in T_DATA in case an object has the
> flag shared. I
> think there should be two different marking functions in case
> an object has
> the set and in the case it does not. That way I could design
> something like
> this:
> struct RVarArrayData {
> long len;
> union {
> long capa;
> VALUE shared;
> } aux;
> VARVALUE * ptr;
> };
> 
> However at the moment this is not a possibility.
> 
> With regards,
> Christophe
> 



		
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com


In This Thread