[#2968] dbm/gdbm/sdbm etc — Dave Thomas <dave@...>
Does ext/dbm supersede gdbm and sdbm?
7 messages
2004/06/07
[#2977] Enumerable#each_with_index in "ri" — Johan Holmberg <holmberg@...>
11 messages
2004/06/12
[#3132] Reporting RI-documentation corrections ?
— Johan Holmberg <holmberg@...>
2004/07/05
[#3133] Re: Reporting RI-documentation corrections ?
— Dave Thomas <dave@...>
2004/07/05
[#3135] Re: Reporting RI-documentation corrections ?
— Austin Ziegler <halostatue@...>
2004/07/05
Speaking of ri documentation, is there anywhere that documents the
[#2978] Date.from_time — Gavin Sinclair <gsinclair@...>
Folks,
5 messages
2004/06/13
[#2982] Array#shift(n) — Michal Rokos <michal@...>
Hello,
15 messages
2004/06/14
[#2985] Re: [Patch] Array#shift(n)
— nobu.nokada@...
2004/06/14
Hi,
[#2987] Re: [Patch] Array#shift(n)
— matz@... (Yukihiro Matsumoto)
2004/06/14
Hi,
[#2988] Re: [Patch] Array#shift(n)
— Michal Rokos <michal@...>
2004/06/14
On Monday 14 of June 2004 16:13, Yukihiro Matsumoto wrote:
[#2989] Re: [Patch] Array#shift(n)
— matz@... (Yukihiro Matsumoto)
2004/06/14
Hi,
[#2991] Re: [Patch] Array#shift(n)
— Michal Rokos <michal@...>
2004/06/14
Hello,
[#2998] Re: [Patch] Array#shift(n)
— nobu.nokada@...
2004/06/15
Hi,
[#2999] Re: [Patch] Array#shift(n)
— Michal Rokos <michal@...>
2004/06/15
Hello,
[#3006] CVS repository — "Eugene Scripnik" <hoaz@...>
Hello.
21 messages
2004/06/16
[#3008] Re: CVS repository
— ts <decoux@...>
2004/06/16
>>>>> "E" == Eugene Scripnik <hoaz@gala.net> writes:
[#3009] Re: CVS repository
— Michal Rokos <michal@...>
2004/06/16
Hi!
[#3010] Re: CVS repository
— Elliott Hughes <ehughes@...>
2004/06/16
On Wed, 2004-06-16 at 09:45, Michal Rokos wrote:
[#3011] Re: CVS repository
— ts <decoux@...>
2004/06/16
>>>>> "M" == Michal Rokos <michal@ruby-lang.org> writes:
[#3012] Re: CVS repository
— "Eugene Scripnik" <hoaz@...>
2004/06/16
Hello.
[#3027] rb_mod_freeze??? — Michal Rokos <michal@...>
Hello!
5 messages
2004/06/17
[#3047] Move all stack info to gc.c — Michal Rokos <michal@...>
Hello,
13 messages
2004/06/23
[#3049] Re: [Patch] Move all stack info to gc.c
— matz@... (Yukihiro Matsumoto)
2004/06/23
Hi,
[#3057] Ruby 1.8.2 to be released. — matz@... (Yukihiro Matsumoto)
Hi,
20 messages
2004/06/23
[#3060] Re: Ruby 1.8.2 to be released.
— Hugh Sasse Staff Elec Eng <hgs@...>
2004/06/23
On Thu, 24 Jun 2004, Yukihiro Matsumoto wrote:
[#3063] Re: Ruby 1.8.2 to be released.
— matz@... (Yukihiro Matsumoto)
2004/06/23
Hi,
[#3090] class= and type checks when casting — "Sean O'Dell" <sean@...>
Matz, I'm not sure if you followed the discussion in ruby-talk about having a
6 messages
2004/06/25
[#3095] 1.8.2: Segfault — Elven <elven@...>
6 messages
2004/06/26
[#3102] gdbm abort - OSX — Dave Thomas <dave@...>
Just before I start another debugging session, has anyone seen this, or
7 messages
2004/06/27
entries / to_a
From:
Johan Holmberg <holmberg@...>
Date:
2004-06-03 16:08:53 UTC
List:
ruby-core #2962
Hi !
The Enumerable module defines the two methods "entries" and "to_a"
as synonyms for the same thing. Some classes that mix-in Enumerable
re-implement "to_a" but *not* "entries". Sometimes this is ok, but
in the case of the Array class I think this is a bad thing.
An example:
require "benchmark"
arr = [11, 22, 33] * 1_000_000
Benchmark.bm(10) do |x|
x.report("to_a") { arr.to_a.length }
x.report("entries") { arr.entries.length }
end
This gives the following output on my Linux machine with an
up-to-date version of Ruby from CVS:
$ ruby test-entries.rb
user system total real
to_a 0.000000 0.000000 0.000000 ( 0.000047)
entries 2.560000 0.020000 2.580000 ( 2.587834)
The "entries" method return a newly created array even thou we
started with an array. We could have returned the original
array and saved some time (this is what "to_a" does).
I added the following patch to "array.c":
--- array.c.orig 2004-06-03 14:26:18.000000000 +0200
+++ array.c 2004-06-03 14:29:16.000000000 +0200
@@ -3001,6 +3001,7 @@
rb_define_method(rb_cArray, "to_s", rb_ary_to_s, 0);
rb_define_method(rb_cArray, "inspect", rb_ary_inspect, 0);
rb_define_method(rb_cArray, "to_a", rb_ary_to_a, 0);
+ rb_define_alias(rb_cArray, "entries", "to_a");
rb_define_method(rb_cArray, "to_ary", rb_ary_to_ary_m, 0);
rb_define_method(rb_cArray, "frozen?", rb_ary_frozen_p, 0);
Then I re-ran the testsuites I know about. The new faster version
seemed to pass all tests so I assume that Ruby *doesn't require* that
we should get a copy.
Wouldn't it be a good idea to add this new behaviour to Ruby?
I see no point in doing the copying.
/Johan Holmberg