[#6115] Ruby 1.8.3: YAML.dump/load cannot handle Bignum — akira yamada / やまだあきら <akira@...>
[#6119] Packaging BOF on Friday the 14th? — Austin Ziegler <halostatue@...>
(Crossposted to both ruby-core and rubygems-developers for the benefit
[#6135] ObjectSpace.each_object, but not Symbols? — TRANS <transfire@...>
I added some state to Symbol:
Hi,
Hi,
[#6143] — Christophe Poucet <christophe.poucet@...>
Hello,
Hi,
On Wed, 5 Oct 2005 nobu.nokada@softhome.net wrote:
Hi,
On Wed, 5 Oct 2005, nobuyoshi nakada wrote:
[#6161] On NullClass or FalseClass#method_missing — TRANS <transfire@...>
Hi--
[#6162] Concerning shared flag — Christophe Poucet <christophe.poucet@...>
Hello,
>>>>> "C" == Christophe Poucet <christophe.poucet@gmail.com> writes:
Hello,
>>>>> "C" == Christophe Poucet <christophe.poucet@gmail.com> writes:
[#6188] yield and call not identical? — "David A. Black" <dblack@...>
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
On Sun, Oct 09, 2005 at 12:41:02AM +0900, James Britt wrote:
Doug Kearns wrote:
H.Yamamoto wrote:
On 10/19/05, why the lucky stiff <ruby-core@whytheluckystiff.net> wrote:
[#6213] extend and super -- I cannot understand why this behavior — TRANS <transfire@...>
module Q
On Tue, 11 Oct 2005, TRANS wrote:
On 10/10/05, Mathieu Bouchard <matju@artengine.ca> wrote:
On Tue, 11 Oct 2005, TRANS wrote:
On 10/10/05, Mathieu Bouchard <matju@artengine.ca> wrote:
[#6235] Keyword arguments in Rite — Daniel Schierbeck <daniel.schierbeck@...>
Hello everybody! I'm new to this list, so please don't flame me if what
Daniel Schierbeck wrote:
[#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
On 10/13/05, Mauricio Fern疣dez <mfp@acm.org> wrote:
On Thu, Oct 13, 2005 at 08:55:41PM +0900, Gavin Sinclair wrote:
[#6262] Re: A concrete solution to RubyGems' repackageability problems — Gavin Sinclair <gsinclair@...>
On 10/13/05, Mauricio Fern疣dez <mfp@acm.org> wrote:
[#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
On Fri, Oct 14, 2005 at 05:04:59PM +0900, Charles E. Thornton wrote:
Mauricio Fern疣dez wrote:
On Oct 14, 2005, at 12:43 PM, Charles E. Thornton wrote:
On Sun, Oct 16, 2005 at 01:34:13PM +0900, Charles Mills wrote:
Mauricio Fern疣dez wrote:
[#6284] Ruby 1.8.3, Gems, Rake and Syck — TRANS <transfire@...>
George Moschovitis tried to send me a gem to try out and it would not install.
On 10/14/05, Ryan Davis <ryand-ruby@zenspider.com> wrote:
[#6315] Integer#** weirdness — Peter Vanbroekhoven <calamitates@...>
Hello,
[#6338] Help/Ruby 1.8.3/HP-UX/[BUG] Bus Error — tad.bochan@...
Hi ... need help ...
[#6358] Handle prompts with newlines in irb auto-indentation mode — noreply@...
Bugs item #2705, was opened at 2005-10-23 23:07
Hi,
[#6362] CGI read_multipart implementaion can create Tempfiles for files less than 10KB — noreply@...
Bugs item #2708, was opened at 2005-10-24 15:44
On Mon, 24 Oct 2005 noreply@rubyforge.org wrote:
[#6364] lib/rational.rb documentation — Gavin Sinclair <gsinclair@...>
Hi,
[#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
On Mon, 24 Oct 2005, Gavin Sinclair wrote:
On Oct 24, 2005, at 7:14 AM, Ara.T.Howard wrote:
On Wed, 26 Oct 2005, Charles Mills wrote:
On 10/26/05, Mathieu Bouchard <matju@artengine.ca> wrote:
On Thu, 27 Oct 2005, Charles Mills wrote:
On 10/27/05, Mathieu Bouchard <matju@artengine.ca> wrote:
[#6373] instance_eval/instance_exec discussion — Daniel Amelang <daniel.amelang@...>
Introduction:
Hi,
[#6376] Crash in Tk demo of Ruby 1.9.0 CVS — Jean-Claude Arbaut <jcarbaut@...>
I tried the demos in /ruby/ext/tk/sample/demos-en/widget
[#6389] [PATCH] 1.8.3 ruby.c doesn't compile on OS X due to missing char **environ — noreply@...
Bugs item #2715, was opened at 2005-10-24 23:01
Hi,
[#6391] Threading performance — Wink Saville <wink@...>
Hello all,
[#6396] Nested Exception — Yohanes Santoso <ysantoso-rubycore@...>
Would you accept a patch to provide nested Exception?
[#6402] Pathname.exists?() — James Edward Gray II <james@...>
Pathname supports the legacy exist?() method, but not the current
[#6405] Re: [PATCH] Pathname.exists?() — "Berger, Daniel" <Daniel.Berger@...>
On 10/25/05, Berger, Daniel <Daniel.Berger@qwest.com> wrote:
On 10/26/05, TRANS <transfire@gmail.com> wrote:
On 10/25/05, Gavin Sinclair <gsinclair@gmail.com> wrote:
On Oct 25, 2005, at 11:28 AM, TRANS wrote:
On Wed, 26 Oct 2005, Eric Hodel wrote:
On 10/26/05, Ara.T.Howard <Ara.T.Howard@noaa.gov> wrote:
On 10/25/05, Gavin Sinclair <gsinclair@gmail.com> wrote:
[#6419] Refactoring eval.c into eval.c, thread.c, thread.h & eval.h — Wink Saville <wink@...>
Hello,
[#6427] Re: Wilderness: I am working of a TAGS Extension - We Have One? — "Berger, Daniel" <Daniel.Berger@...>
> -----Original Message-----
[#6430] PStore Documentation — James Edward Gray II <james@...>
The attached patch completely documents the PStore library. Please
James Edward Gray II 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
Hi,
Charles E. Thornton wrote:
[#6455] Wilderness: OK - Let us Try to sending it (not as a reply) — "Charles E. Thornton" <ruby-core@...>
I am sorry - I don't understand this problem
[#6469] csv.rb a start on refactoring. — Hugh Sasse <hgs@...>
For a database application I found using CSV to be rather slow.
On Oct 28, 2005, at 8:53 AM, Ara.T.Howard wrote:
On Fri, 28 Oct 2005, James Edward Gray II wrote:
On Oct 28, 2005, at 9:58 AM, Ara.T.Howard wrote:
On Sat, 29 Oct 2005, James Edward Gray II wrote:
On Oct 28, 2005, at 8:25 PM, Ara.T.Howard wrote:
On Sat, 29 Oct 2005, James Edward Gray II wrote:
On Oct 28, 2005, at 8:43 PM, Ara.T.Howard wrote:
On Oct 28, 2005, at 8:43 PM, Ara.T.Howard wrote:
On Oct 28, 2005, at 10:06 PM, James Edward Gray II wrote:
On Sun, 30 Oct 2005, James Edward Gray II wrote:
On Oct 29, 2005, at 12:11 PM, Ara.T.Howard wrote:
On Mon, 31 Oct 2005, James Edward Gray II wrote:
I've decided to create a FasterCSV library, based on the code we
On Mon, 31 Oct 2005, James Edward Gray II wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On Mon, 31 Oct 2005, NAKAMURA, Hiroshi wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On Tue, 1 Nov 2005, NAKAMURA, Hiroshi wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On Wed, 2 Nov 2005, NAKAMURA, Hiroshi wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On Oct 29, 2005, at 12:11 PM, Ara.T.Howard wrote:
On Tue, 1 Nov 2005, James Edward Gray II wrote:
On Oct 31, 2005, at 11:59 AM, Ara.T.Howard wrote:
[#6508] characters (and small strings) in ruby 2.0 — Eric Mahurin <eric.mahurin@...>
In ruby 2.0, the current plan is to for a character to be represented as a
Re: another array patch - performance boosts all over the place
Has anybody evaluated this patch? In addition to these cases where the benchmark time went from O(n**2) to O(n), I can show other cases where the memory went from O(n**2) to O(n). I also looked at equivalent perl for many of these. I never found perl to have the element sharing problem (not sure if it does element sharing). I also found that perl 5.6.1+ has a fast unshift like below (always had a fast shift), but doesn't have fast random insert/delete. perl's splice always operates toward the right instead of the closest of the right or left like my patch. We can't even make a fast FIFO out of an Array now (see push(shift) benchmark). The reason for this is element sharing cause large copies when a modification is made (shift does sharing and push does the unsharing). This is exactly what Queue uses and its operations are O(n) instead of O(1) as they should be. I have several applications in mind but the one that I have immediate use for is a FIFO buffer where that buffer could be an Array or String (need the String patch also). Another idea (that I don't need right now) is for a text editor buffer that is an inside-out gap buffer (don't know what to call it) and has the same performance attributes as a gap buffer. I would also like to do a similar patch for String, but I need to know whether this will be accepted before I invest the time. These are not trivial patches - they are involved because of the data structure changes. I will be at rubyconf if this needs to be discussed in person. --- Eric Mahurin <eric_mahurin@yahoo.com> wrote: > Is anybody interested in the patches I'm doing to make arrays > (and someday strings) faster? I didn't see a response for my > last patch (shift/unshift). Now I have another patch > (fastarray.diff - attached) that should help out a lot more > code sequences. Here are the results using the attached > benchmark (end_test.rb): > > n = 32768 (2**15) > > code old new > ------------------------- ----- ----- > ; 0.01 0.01 > shift 0.02 0.02 > shift(1) 0.03 0.04 > pop 0.02 0.01 > pop(1) 0.04 0.05 > shift;pop 0.02 0.02 > shift(1);pop(1) 0.07 0.08 > unshift(i) 2.34 0.02 > push(i) 0.02 0.02 > unshift(i);push(i) 2.35 0.03 > unshift(shift) 17.61 0.03 > unshift(*shift(1)) 17.42 0.07 > push(pop) 0.04 0.02 > push(*pop(1)) 13.83 0.08 > push(shift) 14.64 0.03 > push(*shift(1)) 15.39 0.08 > unshift(pop) 2.33 0.03 > unshift(*pop(1)) 16.47 0.08 > slice!(1) 2.29 0.03 > delete_at(1) 2.30 0.02 > slice!(1,1) 12.75 0.05 > self[1,1]=[] 2.36 0.05 > slice!(-2) 0.02 0.03 > delete_at(-2) 0.02 0.02 > slice!(-2,1) 10.37 0.05 > self[-2,1]=[] 0.04 0.04 > self[1,0]=[i] 3.49 0.04 > insert(1,i) 3.44 0.04 > self[-1,0]=[i] 1.07 0.05 > insert(-2,i) 1.02 0.05 > self[1,0]=slice!(1,1) 16.40 0.06 > insert(1,delete_at(1)) 5.60 0.06 > self[-1,0]=slice!(-2,1) 11.92 0.06 > insert(-2,delete_at(-2)) 1.00 0.06 > self[-1,0]=slice!(1,1) 14.10 0.07 > insert(-2,delete_at(1)) 3.29 0.06 > self[1,0]=slice!(-2,1) 14.06 0.07 > insert(1,delete_at(-2)) 3.30 0.06 > self[i]=self[i] 0.03 0.02 > self[i]=at(i) 0.03 0.02 > self[i,1]=self[i,1] 11.72 0.06 > self[-i-1]=self[-i-1] 0.05 0.05 > self[-i-1]=at(-i-1) 0.04 0.05 > self[-i-1,1]=self[-i-1,1] 11.74 0.07 > self[-i-1]=self[i] 0.03 0.03 > self[-i-1]=at(i) 0.03 0.04 > self[-i-1,1]=self[i,1] 11.67 0.07 > self[i]=self[-i-1] 0.04 0.04 > self[i]=at(-i-1) 0.03 0.03 > self[i,1]=self[-i-1,1] 11.70 0.06 > > In each of the tests above, it runs the code n times on an > array that has an average length of n. The massive > performance > boosts you see above is because the old (current) code was > O(n) > in those cases and my patched code is O(1). > > Here were the changes I made: > > - added a bit (ELTS_LFREE=FL_USER3) to say whether there is > free space to the left of ary->ptr and put the number of free > elements in ary->ptr[-1]. > > - instead of ary->aux.capa, did the same for free space to > the > right of ary->ptr+ary->len-1 (new flag: ELTS_RFREE=FL_USER3 > and > amount stored in ary->ptr[ary->len]). This freed up > ary->shared for dedicated used (instead of being a union with > capa). > > - instead of shared arrays all pointing to a common frozen > array object, put shared arrays in a circular linked list > (used > ary->shared). The original master array will have > ELTS_SHARED=0 and the others will have ELTS_SHARED=1. > Unshared > arrays will have ELTS_SHARED=0 and ary->shared=0. > > - when a shared array is to be modified, there are 2 cases: > slave - make copy and remove from shared circular linked > list; > master - make copies of all slaves and terminate sharing > between this master and its slaves. When a shared array is > to > be freed, it operates in a similar way. > > - during GC, shared arrays are treated independently (master > can be freed). This works because of the above mechanism. > Before, unused object references would persist because of > array > sharing (keeping an array slice around would keep references > to > all objects in the original array). > > - modified various functions (shift, unshift, delete_at, > splice), to insert/delete toward the closest side to minimize > the number of elements needed to be moved. > > Does anybody see a downside to this? The main problem I see > is > that I don't see the big picture when making these changes > (i.e. GC). And this needs to be better tested. Anybody know > of something good to do array testing? I just used the > self-testing benchmark attached and what's in test/ruby. > > Eric look at previous message for patch and benchmark attachments __________________________________ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com