[#7968] array .{first, last, at} — Kazunori NISHI <kazunori@...>

西@九大です。

25 messages 1999/10/07
[#7969] Re: array .{first, last, at} — nobu.nakada@... 1999/10/07

なかだです。

[#7983] Re: array .{first, last, at} — Kazunori NISHI <kazunori@...> 1999/10/12

西@九大です。

[#7984] Re: array .{first, last, at} — matz@... (Yukihiro Matsumoto) 1999/10/12

まつもと ゆきひろです

[#7985] [patch] Array#delete_at w/ minus value — EGUCHI Osamu <eguchi@...> 1999/10/12

えぐち@エスアンドイーです。

[ruby-dev:8043] Re: no bang method always returned unique?

From: EGUCHI Osamu <eguchi@...>
Date: 1999-10-17 02:59:45 UTC
List: ruby-dev #8043
えぐち@エスアンドイー です。

>>> In message [ruby-dev:8041] Re: no bang method always returned unique?
    On Sun, 17 Oct 1999 02:09:34 +0900, matz@netlab.co.jp (Yukihiro Matsumoto) said:

matz> まつもと ゆきひろです
matz> 
matz> In message "[ruby-dev:8037] no bang method always returned unique?"
matz>     on 99/10/17, EGUCHI Osamu <eguchi@shizuokanet.ne.jp> writes:
matz> 
matz> |前回の、配列の変更未遂の場合の変更検査のパッチに
matz> |紛れ込んでいた。
matz> 
matz> うーむ、これなんですけどね、equal? についてはあまりこだわら
matz> ず無駄なコピーは避けた方が良いのではないかっていうのが、元々
matz> のポリシーなんですね。変更しないってんじゃないんですけど、
matz> 変更するならどうするべきか一度話し合ってからにしたいです。
matz> 
matz> 統一感が無いので、必ずコピーというのも理解はできます。

変更する必要性は、equal? 問題が生じるのは稀れなので
軽微だと私も思います。

しかし、コピーのコストについては、

変更前:

  static VALUE
  rb_ary_flatten(ary)
      VALUE ary;
  {
      VALUE v = rb_ary_flatten_bang(rb_ary_dup(ary));
                                    ^^^^^^^^^^^^^^^
      if (NIL_P(v)) return ary;
      return v;
  }

変更後:

  {
      rb_ary_flatten_bang(rb_ary_dup(ary));
      return ary;         ~~~~~~~~~~~~~~~
  }


の様に、必ずコピーを行っているので、変更前後で同等です。

強いて言えば、、コピーされたインスタンスが次の GC の対象に
必ずなるかどうかの差はあります。

もしかして、この 「GC の対象にすぐになるか」を問題にしてますか?

	えぐち

In This Thread