[#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: Eric Mahurin <eric_mahurin@...>
Date: 2005-10-05 17:11:04 UTC
List: ruby-core #6177
In my patch, you'll notice that there is no "capa" field. 
Instead I used 2 flag bits.  One to indicate that there is free
space to the right of the array (>=ptr+len) and one to indicate
there is space to the left of the array (<ptr).  I put the what
the exact number of free entries is in ptr[len] (for space to
the right) and ptr[-1] (for space to the left).  I can do this
since this would be normally don't care.  This allows
shift/unshift to be symmetrical with pop/push and random
inserts/deletes to operate toward the closest side (double
performance).  It also frees up "shared" for dedicated use so
that I could fix up the performance issues with sharing.

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

> 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
> 
> 
> 



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

In This Thread

Prev Next