[#9052] bang method returns string always — WATANABE Hirofumi <eban@...>

わたなべです.

92 messages 2000/02/01
[#9054] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/01

まつもと ゆきひろです

[#9060] Re: bang method returns string always — WATANABE Hirofumi <eban@...> 2000/02/02

わたなべです.

[#9062] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/02

まつもと ゆきひろです

[#9070] Re: bang method returns string always — Wakou Aoyama <wakou@...> 2000/02/03

青山です。

[#9082] Re: bang method returns string always — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/04

なひです.

[#9083] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/04

まつもと ゆきひろです

[#9259] ruby object — Minero Aoki <aamine@...> 2000/02/20

あおきです。

[#9263] Re: ruby object — matz@... (Yukihiro Matsumoto) 2000/02/21

まつもと ゆきひろです

[#9264] Re: ruby object — Minero Aoki <aamine@...> 2000/02/21

あおきです。

[#9266] Re: ruby object — matz@... (Yukihiro Matsumoto) 2000/02/22

まつもと ゆきひろです

[#9084] Re: bang method returns string always — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/04

なひです.

[#9096] Re: bang method returns string always — Kazunori NISHI <kazunori@...> 2000/02/04

西@九大です。

[#9100] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/04

まつもと ゆきひろです

[#9154] Re: bang method returns string always — Kazunori NISHI <kazunori@...> 2000/02/08

西@九大です。

[#9158] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/08

まつもと ゆきひろです

[#9170] Re: bang method returns string always — Kazunori NISHI <kazunori@...> 2000/02/09

西@九大です。

[#9171] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/09

まつもと ゆきひろです

[#9173] Re: bang method returns string always — Koji Arai <JCA02266@...> 2000/02/09

新井です。

[#9206] Re: bang method returns string always — nobu.nakada@... 2000/02/13

なかだです。

[#9207] Re: bang method returns string always — "Akinori -Aki- MUSHA" <knu@...> 2000/02/13

 knuです。

[#9208] Re: bang method returns string always — nobu.nakada@... 2000/02/13

なかだです。

[#9211] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/13

まつもと ゆきひろです

[#9212] Re: bang method returns string always — "Akinori -Aki- MUSHA" <knu@...> 2000/02/13

 knuです。

[#9213] Re: bang method returns string always — Kazuhiro Yoshida <moriq.kazuhiro@...> 2000/02/14

もりきゅうです。ゴミまき。

[#9214] Re: bang method returns string always — gotoken@... (GOTO Kentaro) 2000/02/14

ごとけんです

[#9215] Re: bang method returns string always — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/02/14

わたなべです.

[#9218] Re: bang method returns string always — Kazuhiro Yoshida <moriq.kazuhiro@...> 2000/02/15

もりきゅうです。

[#9219] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/15

まつもと ゆきひろです

[#9220] Re: bang method returns string always — Kazuhiro Yoshida <moriq.kazuhiro@...> 2000/02/15

もりきゅうです。

[#9222] Re: bang method returns string always — Koji Arai <JCA02266@...> 2000/02/15

新井です。

[#9224] Re: bang method returns string always — matz@... (Yukihiro Matsumoto) 2000/02/15

まつもと ゆきひろです

[#9085] xmalloc() in Windows — "Shigeo Kobayashi" <shigeo@...>

小林です。

38 messages 2000/02/04

[#9134] Re: site_ruby — gotoken@... (GOTO Kentaro)

ごとけんです

24 messages 2000/02/07
[#9135] Re: site_ruby — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/02/07

わたなべです.

[#9143] Re: site_ruby — nobu.nakada@... 2000/02/07

なかだです。

[#9161] Re: site_ruby — gotoken@... (GOTO Kentaro) 2000/02/08

In message "[ruby-dev:9143] Re: site_ruby"

[#9290] [fix] String#* with huge string — EGUCHI Osamu <eguchi@...>

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

17 messages 2000/02/26
[#9293] Re: [fix] String#* with huge string — matz@... (Yukihiro Matsumoto) 2000/02/26

まつもと ゆきひろです

[#9294] Re: [fix] String#* with huge string — EGUCHI Osamu <eguchi@...> 2000/02/27

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

[#9297] GC Problem ? — "Shigeo Kobayashi" <shigeo@...>

小林です。

23 messages 2000/02/27

[ruby-dev:9148] Re: bang method returns string always

From: matz@... (Yukihiro Matsumoto)
Date: 2000-02-07 14:21:48 UTC
List: ruby-dev #9148
まつもと ゆきひろです

In message "[ruby-dev:9139] Re: bang method returns string always"
    on 00/02/07, Koji Arai <JCA02266@nifty.ne.jp> writes:

|では、前向きな案をば。

感謝します。

|・bang methodの挙動をメソッドチェーンしてるかどうかで変える。

これはちょっとつらそう。現在の実装で「チェーンしてるかどうか」
を示す情報が全くないのに加えて

|  (bang methodの仕様が複雑になるだけ?)

という問題もあります。

|・no bang メソッドの効率を良くする。
|
|    newstr = str.chop.gsub.upcase
|
|  を
|
|    newstr = (str.dup).chop!.gsub!.upcase!
|
|  と等価にする(ここで書いてるbang methodはnilを返さない)

no bang methodにはかならず元の文字列のコピーが発生しますから、
bang methodと等価と言うのは簡単ではないのですが、素朴な観点
からの指摘には意味がありそうな雰囲気があります。

|  (bang method でメソッドチェーンを書こうとするのは効率のた
|  めなのですよね?)

うーん、確かにそうですね。漠然と「やっちゃうから」と考えてた
んですが、根源的な動機を考えるとやはり「効率のため」なんでしょ
うね。しかし、実際どの程度文字列コピーによって効率が違うんで
しょうか。ま、簡単な例ですが

 % time ruby -e '100000.times {a="aaaaaaaaaaaaaaaaaaaaaaaaa";a.gsub!(/a/,"A")}'
 % time ruby -e '100000.times {a="aaaaaaaaaaaaaaaaaaaaaaaaa";a.gsub(/a/,"A")}'

で比較してみました。私のMMX Pentium 166MHz(遅い?)では、
100000回繰り返しても差は1秒以内でした。

 % time ruby -e '100000.times {a="aaaaaaaaaaaaaaaaaaaaaaaaa";a.gsub!(/a/,"A")}'

 real    0m32.694s
 user    0m31.010s
 sys     0m0.040s

 % time ruby -e '100000.times {a="aaaaaaaaaaaaaaaaaaaaaaaaa";a.gsub(/a/,"A")}'

 real    0m33.230s
 user    0m31.520s
 sys     0m0.020s

コピーする文字列が短いことを考慮しても、あんまり高速化したり
効率を気にしたりする必要のある差ではなさそうですね。もうちょっ
と考えてみますが、どうやら反対派が勝ちそうな雰囲気ですね。
# 良かったね、なひさん、新井さん

                                君子豹変
                                まつもと ゆきひろ /:|)

In This Thread