[#16732] sharing sub-regexp — Tanaka Akira <akr@...17n.org>

Oniguruma についてひとつ要望があります。

51 messages 2002/04/03
[#16744] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/04

Tanaka Akiraさんの<hvopu1hxfyd.fsf@coulee.a02.aist.go.jp>から

[#16746] Re: sharing sub-regexp — matz@... (Yukihiro Matsumoto) 2002/04/04

まつもと ゆきひろです

[#16753] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/04

In article <1017890618.302241.17865.nullmailer@ev.netlab.jp>,

[#16755] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/05

Tanaka Akiraさんの<hvo7knn93ug.fsf@coulee.a02.aist.go.jp>から

[#16756] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/05

In article <20020405044506.D4784349@helium.ruby-lang.org>,

[#16822] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/10

Tanaka Akiraさんの<hvopu1e4omy.fsf@coulee.a02.aist.go.jp>から

[#16831] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/10

In article <20020410025054.C8DF0915@helium.ruby-lang.org>,

[#16863] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/11

In article <hvor8lnchak.fsf@coulee.a02.aist.go.jp>,

[#16877] Re: sharing sub-regexp — Shugo Maeda <shugo@...> 2002/04/12

前田です。

[#16887] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/12

In article <87pu15z80q.wl@studly.priv.netlab.jp>,

[#16909] Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/15

前田です。

[#16912] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/15

In article <87g01x1e6m.wl@studly.priv.netlab.jp>,

[#16931] Re: Regexp#to_s — Kazuhiro NISHIYAMA <zn@...> 2002/04/16

西山和広です。

[#16934] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/16

In article <20020416180631.988E.ZN@mbf.nifty.com>,

[#16938] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/17

前田です。

[#16939] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/17

In article <87u1qaj0xe.wl@studly.priv.netlab.jp>,

[#16947] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/18

前田です。

[#16950] Re: Regexp#to_s — matz@... (Yukihiro Matsumoto) 2002/04/18

まつもと ゆきひろです

[#16951] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/18

In article <1019116103.420173.12691.nullmailer@picachu.netlab.jp>,

[#16960] Re: Regexp#to_s — nobu.nakada@... 2002/04/18

なかだです。

[#16761] StringIO — tadf@...

ふなばです。

43 messages 2002/04/05
[#16786] Re: StringIO — nobu.nakada@... 2002/04/08

なかだです。

[#16802] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#16803] Re: StringIO — nobu.nakada@... 2002/04/09

なかだです。

[#16804] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#17221] Re: StringIO — Wakou Aoyama <wakou@...> 2002/05/30

青山です。

[#17230] Re: StringIO — matz@... (Yukihiro Matsumoto) 2002/05/30

まつもと ゆきひろです

[#17231] Re: StringIO — Tanaka Akira <akr@...17n.org> 2002/05/30

In article <1022740594.117106.6073.nullmailer@picachu.netlab.jp>,

[#17233] IO#size — Shugo Maeda <shugo@...> 2002/05/30

前田です。

[#17239] Re: IO#size — Tanaka Akira <akr@...17n.org> 2002/05/31

In article <874rgqdt3x.wl@studly.priv.netlab.jp>,

[#17253] Re: IO#size — Wakou Aoyama <wakou@...> 2002/05/31

青山です。

[#16790] Ruby Shim — "Akinori MUSHA" <knu@...>

 1.7 early access kit という仮称で提案した構想ですが、先ほど

27 messages 2002/04/08
[#16796] Re: Ruby Shim — Koji Arai <JCA02266@...> 2002/04/08

新井です。

[#16833] math.c 1.10 — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

23 messages 2002/04/11
[#16834] Re: math.c 1.10 — matz@... (Yukihiro Matsumoto) 2002/04/11

まつもと ゆきひろです

[#16869] Makefiles dependency — nobu.nakada@...

なかだです。

17 messages 2002/04/12

[ruby-dev:16803] Re: StringIO

From: nobu.nakada@...
Date: 2002-04-09 02:27:31 UTC
List: ruby-dev #16803
なかだです。

At Tue, 9 Apr 2002 10:12:46 +0900,
tadf@kt.rim.or.jp wrote:
> > しかし、さすがにそこまで遅くはなさそうなんですが。
> 
> なんでかなあ、と思って、Linux でも試してみました。Linux では、なかださ
> んの言うとおりのようです。Linux のほうがどこか (メモリ管理とか) 優れて
> いるのか、FreeBSD の出来が悪いのか。ともかく、Linux では問題ないが、
> FreeBSD ではやけに遅い、ということのようです (他の環境ではどうなのか)。

うーん、システム固有の癖? となると、ちょっとボトルネックが分か
らないなぁ。プロファイル取れるとありがたいんですが。

> ただ、FreeBSD でも、1.6 の String は遅いが、1.7 のほうは速い、というこ
> とがあるので (偶然ではなく、意識してやってると思う)、なにかの工夫で、
> 劇的に改善されそうな気がします。

rb_str_modify()の回数を減らすのとrb_str_cat()を使うようにしたと
ころ手元では30%弱くらい速くなったんですが、どうでしょうか。まだ
あまり劇的とはいえないかも知れませんが。


Index: ext/stringio/stringio.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/stringio/stringio.c,v
retrieving revision 1.4
diff -u -2 -p -r1.4 stringio.c
--- ext/stringio/stringio.c	2002/03/18 13:20:54	1.4
+++ ext/stringio/stringio.c	2002/04/09 02:17:55
@@ -126,5 +126,4 @@ check_modifiable(ptr)
 	rb_raise(rb_eIOError, "not modifiable string");
     }
-    rb_str_modify(ptr->string);
 }
 
@@ -549,4 +548,5 @@ strio_ungetc(self, ch)
 	    (unsigned char)cc) {
 	    check_modifiable(ptr);
+	    rb_str_modify(ptr->string);
 	    RSTRING(ptr->string)->ptr[ptr->pos] = cc;
 	}
@@ -741,8 +741,16 @@ strio_write(self, str)
 	ptr->pos = RSTRING(ptr->string)->len;
     }
-    if (ptr->pos + len > RSTRING(ptr->string)->len) {
-	rb_str_resize(ptr->string, ptr->pos + len);
+    if (ptr->pos == RSTRING(ptr->string)->len) {
+	rb_str_cat(ptr->string, RSTRING(str)->ptr, len);
     }
-    rb_str_update(ptr->string, ptr->pos, len, str);
+    else {
+	if (ptr->pos + len > RSTRING(ptr->string)->len) {
+	    rb_str_resize(ptr->string, ptr->pos + len);
+	}
+	else {
+	    rb_str_modify(ptr->string);
+	}
+	rb_str_update(ptr->string, ptr->pos, len, str);
+    }
     ptr->pos += len;
     return LONG2NUM(len);
@@ -768,4 +776,7 @@ strio_putc(self, ch)
     if (ptr->pos >= RSTRING(ptr->string)->len) {
 	rb_str_resize(ptr->string, ptr->pos + 1);
+    }
+    else {
+	rb_str_modify(ptr->string);
     }
     RSTRING(ptr->string)->ptr[ptr->pos++] = c;


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread