[#36071] サマータイムでのsleepの動作について — Yoshikawa <yoshixool@...>

吉川と申します。

16 messages 2008/09/01
[#36074] Re: サマータイムでのsleepの動作について — "U.Nakamura" <usa@...> 2008/09/01

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

[#36084] Re: サマータイムでのsleepの動作について — Yoshikawa <yoshixool@...> 2008/09/01

吉川です。

[#36090] Re: サマータイムでのsleepの動作について — "U.Nakamura" <usa@...> 2008/09/02

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

[#36132] [Feature #542] cgi.rb : CGI::unescape return encoding — Takeyuki Fujioka <redmine@...>

Feature #542: cgi.rb : CGI::unescape return encoding

48 messages 2008/09/03
[#36145] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — "NARUSE, Yui" <naruse@...> 2008/09/03

成瀬です。

[#36146] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/04

藤岡です。

[#36161] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/05

藤岡です。

[#36239] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Tanaka Akira <akr@...> 2008/09/10

In article <48C0C20E.4000307@rabbix.jp>,

[#36242] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Tietew <tietew@...> 2008/09/10

[#36244] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/10

藤岡です。

[#36261] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Tanaka Akira <akr@...> 2008/09/10

In article <48C76705.5000202@rabbix.jp>,

[#36263] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/11

藤岡です。

[#36282] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Tanaka Akira <akr@...> 2008/09/12

In article <48C8A83E.8000200@rabbix.jp>,

[#36289] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/13

藤岡です。

[#36332] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — "NARUSE, Yui" <naruse@...> 2008/09/16

成瀬です。

[#36341] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Tietew <tietew@...> 2008/09/17

[#36342] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/17

藤岡です。

[#36345] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Tietew <tietew@...> 2008/09/17

[#36384] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/19

藤岡です。

[#36422] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/21

藤岡です。

[#36425] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Kazuhiro NISHIYAMA <zn@...> 2008/09/21

西山和広です。

[#36427] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/21

藤岡です。

[#36428] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — "NARUSE, Yui" <naruse@...> 2008/09/21

成瀬です。

[#36430] Re: [Feature #542] cgi.rb : CGI::unescape return encoding — Fujioka <fuj@...> 2008/09/21

藤岡です。

[#36147] GNU iconv dependency — Takahiro Kambe <taca@...>

こんにちは。

28 messages 2008/09/04
[#36222] Re: GNU iconv dependency — "NARUSE, Yui" <naruse@...> 2008/09/08

成瀬です。

[#36248] Re: GNU iconv dependency — Takahiro Kambe <taca@...> 2008/09/10

In message <48C544C3.6090607@airemix.jp>

[#36249] Re: GNU iconv dependency — "NARUSE, Yui" <naruse@...> 2008/09/10

成瀬です。

[#36250] Re: GNU iconv dependency — Takahiro Kambe <taca@...> 2008/09/10

In message <48C7D1E1.5040403@airemix.jp>

[#36256] Re: GNU iconv dependency — "NARUSE, Yui" <naruse@...> 2008/09/10

Takahiro Kambe wrote:

[#36257] Re: GNU iconv dependency — Takahiro Kambe <taca@...> 2008/09/10

In message <48C7EC6B.5060306@airemix.jp>

[#36258] Re: GNU iconv dependency — "NARUSE, Yui" <naruse@...> 2008/09/10

Takahiro Kambe wrote:

[#36259] Re: GNU iconv dependency — Takahiro Kambe <taca@...> 2008/09/10

In message <48C7F8DD.7060001@airemix.jp>

[#36281] 合成文字の2コードポイント目 — "NARUSE, Yui" <naruse@...>

成瀬です。

24 messages 2008/09/12
[#36283] Re: 合成文字の2コードポイント目 — Yukihiro Matsumoto <matz@...> 2008/09/13

まつもと ゆきひろです

[#36286] Re: 合成文字の2コードポイント目 — Tanaka Akira <akr@...> 2008/09/13

In article <E1KeKG9-0004NC-Jb@x61.netlab.jp>,

[#36287] Re: 合成文字の2コードポイント目 — Yukihiro Matsumoto <matz@...> 2008/09/13

まつもと ゆきひろです

[#36292] Re: 合成文字の2コードポイント目 — Tanaka Akira <akr@...> 2008/09/14

In article <E1KeRWe-00037N-Vb@x61.netlab.jp>,

[#36293] Re: 合成文字の2コードポイント目 — "NARUSE, Yui" <naruse@...> 2008/09/14

成瀬です。

[#36304] Re: 合成文字の2コードポイント目 — Tanaka Akira <akr@...> 2008/09/15

In article <48CC86FD.3000409@airemix.jp>,

[#36306] Re: 合成文字の2コードポイント目 — "NARUSE, Yui" <naruse@...> 2008/09/15

Tanaka Akira wrote:

[#36310] Re: 合成文字の2コードポイント目 — Tanaka Akira <akr@...> 2008/09/15

In article <48CE068E.3080701@airemix.jp>,

[#36314] Re: 合成文字の2コードポイント目 — "NARUSE, Yui" <naruse@...> 2008/09/15

成瀬です。

[#36315] Re: 合成文字の2コードポイント目 — Yukihiro Matsumoto <matz@...> 2008/09/15

まつもと ゆきひろです

[#36316] Re: 合成文字の2コードポイント目 — Tanaka Akira <akr@...> 2008/09/16

In article <E1KfNyE-0005XO-0P@x61.netlab.jp>,

[#36317] Re: 合成文字の2コードポイント目 — Yukihiro Matsumoto <matz@...> 2008/09/16

まつもと ゆきひろです

[#36290] adding Pathname#abspath() — "Akinori MUSHA" <knu@...>

 SUSv3のrealpath(3)の項には、存在しないコンポーネントがあったら

18 messages 2008/09/13
[#36291] adding Pathname#resolve (was: adding Pathname#abspath()) — "Akinori MUSHA" <knu@...> 2008/09/13

 名前が良くなかったですね。Pathname#resolve()でどうでしょうか。

[#36297] Re: adding Pathname#resolve (was: adding Pathname#abspath()) — Tanaka Akira <akr@...> 2008/09/14

In article <86wshfn0zl.knu@iDaemons.org>,

[#36308] Re: adding Pathname#resolve (was: adding Pathname#abspath()) — "Akinori MUSHA" <knu@...> 2008/09/15

At Sun, 14 Sep 2008 23:20:56 +0900,

[#36437] Re: adding Pathname#resolve (was: adding Pathname#abspath()) — Tanaka Akira <akr@...> 2008/09/22

In article <86vdwxn9rh.knu@iDaemons.org>,

[#36456] Re: adding Pathname#resolve (was: adding Pathname#abspath()) — "Akinori MUSHA" <knu@...> 2008/09/22

At Mon, 22 Sep 2008 12:43:18 +0900,

[#36489] Re: adding Pathname#resolve (was: adding Pathname#abspath()) — Tanaka Akira <akr@...> 2008/09/23

In article <86od2gcvvj.knu@iDaemons.org>,

[#36560] Re: adding Pathname#resolve (was: adding Pathname#abspath()) — "Akinori MUSHA" <knu@...> 2008/09/25

At Wed, 24 Sep 2008 02:02:59 +0900,

[#36582] Re: adding Pathname#resolve (was: adding Pathname#abspath()) — Tanaka Akira <akr@...> 2008/09/25

In article <86ljxgd0jt.knu@iDaemons.org>,

[#36325] mathn (#**) — Tadayoshi Funaba <tadf@...>

mahtn した場合、

16 messages 2008/09/16

[#36346] add "Error" suffix for Encoding Exceptions — Tadashi Saito <shiba@...2.accsnet.ne.jp>

斎藤と申します。

18 messages 2008/09/17
[#36356] Re: add "Error" suffix for Encoding Exceptions — "NARUSE, Yui" <naruse@...> 2008/09/17

成瀬です。

[#36366] Re: add "Error" suffix for Encoding Exceptions — Tadashi Saito <shiba@...2.accsnet.ne.jp> 2008/09/18

斎藤と申します。

[#36371] Re: add "Error" suffix for Encoding Exceptions — "Yusuke ENDOH" <mame@...> 2008/09/18

遠藤です。

[#36349] Complex/image — Tadayoshi Funaba <tadf@...>

[ruby-math:00543] を読んで、image はやめて imag に変更したらどうか、つ

16 messages 2008/09/17
[#36363] Re: Complex/image — keiju@... (石塚圭樹) 2008/09/18

けいじゅ@いしつかです.

[#36372] Re: Complex/image — Tadayoshi Funaba <tadf@...> 2008/09/18

> imageとimagの件ですが, 現行では両方定義されているけど, imageは削除って

[#36448] [Feature #583] TmpdirとTempfile — Yuki Sonoda <redmine@...>

Feature #583: TmpdirとTempfile

11 messages 2008/09/22

[#36461] {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...>

Complex と Rational では、Unify が定義された場合、可能なら整数等に正規

36 messages 2008/09/22
[#36468] Re: {Complex,Rational}::Unify — Yukihiro Matsumoto <matz@...> 2008/09/22

まつもと ゆきひろです

[#36472] Re: {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...> 2008/09/22

> mathn.rbはcomplex.rbなどと同一の作者が同時に(一体として)作成

[#36483] Re: {Complex,Rational}::Unify — keiju@... (石塚圭樹) 2008/09/23

けいじゅ@いしつかです.

[#36487] Re: {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...> 2008/09/23

> まず, Unifyなしで動作するように, mathn側で対応させてください. それから,

[#36520] Re: {Complex,Rational}::Unify — keiju@... (石塚圭樹) 2008/09/24

けいじゅ@いしつかです.

[#36561] Re: {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...> 2008/09/25

> mathn動かなくなっていると思うので, あまり大丈夫ではありません.

[#36566] Re: {Complex,Rational}::Unify — keiju@... (石塚圭樹) 2008/09/25

けいじゅ@いしつかです.

[#36605] Re: {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...> 2008/09/26

> これらのメソッドを呼び出すのではなく, 再定義することによって振る舞いを

[#36608] Re: {Complex,Rational}::Unify — keiju@... (石塚圭樹) 2008/09/26

けいじゅ@いしつかです.

[#36609] Re: {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...> 2008/09/26

> 当然, mathnで対応することはできます.

[#36651] Re: {Complex,Rational}::Unify — keiju@... (石塚圭樹) 2008/10/01

けいじゅ@いしつかです.

[#36654] Re: {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...> 2008/10/02

> >それで、僕が改めて言うまでもないことですが、mathn は石塚さんの担当なの

[#36657] Re: {Complex,Rational}::Unify — keiju@... (石塚圭樹) 2008/10/03

けいじゅ@いしつかです.

[#36658] Re: {Complex,Rational}::Unify — Yukihiro Matsumoto <matz@...> 2008/10/03

まつもと ゆきひろです

[#36883] Re: {Complex,Rational}::Unify — keiju@... (石塚圭樹) 2008/10/23

けいじゅ@いしつかです.

[#36903] Re: {Complex,Rational}::Unify — Yukihiro Matsumoto <matz@...> 2008/10/24

まつもと ゆきひろです

[#36512] Encoding.default_internal のためのパッチ — Martin Duerst <duerst@...>

[ruby-core:18774] に Michael Selig から Encoding::default_internal

57 messages 2008/09/24
[#36517] Re: Encoding.default_internal のためのパッチ — "NARUSE, Yui" <naruse@...> 2008/09/24

成瀬です。

[#36523] Re: Encoding.default_internal のためのパッチ — Yukihiro Matsumoto <matz@...> 2008/09/24

まつもと ゆきひろです

[#36550] Re: Encoding.default_internal のためのパッチ — Nobuyoshi Nakada <nobu@...> 2008/09/25

なかだです。

[#36551] Re: Encoding.default_internal のためのパッチ — Yukihiro Matsumoto <matz@...> 2008/09/25

まつもと ゆきひろです

[#36554] Re: Encoding.default_internal のためのパッチ — Martin Duerst <duerst@...> 2008/09/25

At 14:58 08/09/25, Yukihiro Matsumoto wrote:

[#36556] Re: Encoding.default_internal のためのパッチ — Yukihiro Matsumoto <matz@...> 2008/09/25

まつもと ゆきひろです

[#36547] [Feature #600] cgi.rbのマルチパートフォームの受信は1.8との互換性が低い — Takeyuki Fujioka <redmine@...>

Feature #600: cgi.rbのマルチパートフォームの受信は1.8との互換性が低い

7 messages 2008/09/25

[#36628] [IA-64]BigDecimal#sqrt の仕様 — TAKANO Mitsuhiro <takano32@...>

こんにちは

15 messages 2008/09/30
[#36630] Re: [IA-64]BigDecimal#sqrt の仕様 — TAKANO Mitsuhiro <takano32@...> 2008/09/30

高野です。

[ruby-dev:36300] [patch] performance improvement patch for benchmark/bm_so_count_words.rb

From: "masayoshi takahashi" <maki@...>
Date: 2008-09-15 03:13:41 UTC
List: ruby-dev #36300
高橋征義です。

1.9でbenchmarkを走らせたところ、bm_so_count_wordsの結果がひどかった
(1.8のときより30倍くらい遅くなる)ので、パッチを書いてみました。
基本的にはsinglebyteの時にエンコーディングを気にせず、1.8の時の
コードのように処理させるものです。これでも1.8の2倍程度の時間は
かかってしまうようですが(Mac OS X 10.5.4)。

あと、single_byte_optimizable(str) に、rb_enc_str_asciionly_p(str) を
加えてしまってもいいのでしょうか? 一般に加えてしまってよいのか
よく分からなかったので、このpatchでは、
    if (single_byte_optimizable(str) || rb_enc_str_asciionly_p(str)) {
などという形で判別するようにしています。

singlebyteの時だけ早くなってどーする、と意見もあるかと
思いますが、ないよりはマシかと思うので、よろしくお願いします。

高橋征義 (takahashimm@gmail.com)

Attachments (1)

string.c.diff (3.77 KB, text/x-diff)
--- string.c.old	2008-09-15 07:38:22.000000000 +0900
+++ string.c	2008-09-15 07:39:00.000000000 +0900
@@ -4323,7 +4323,7 @@ tr_trans(VALUE str, VALUE src, VALUE rep
     int last = 0, modify = 0, i, l;
     char *s, *send;
     VALUE hash = 0;
-    int singlebyte = single_byte_optimizable(str);
+    int singlebyte = (single_byte_optimizable(str) || rb_enc_str_asciionly_p(str));
 
     StringValue(src);
     StringValue(repl);
@@ -4756,17 +4756,28 @@ rb_str_squeeze_bang(int argc, VALUE *arg
     if (!s || RSTRING_LEN(str) == 0) return Qnil;
     send = RSTRING_END(str);
     save = -1;
-    while (s < send) {
-	unsigned int c = rb_enc_codepoint(s, send, enc);
-	int clen = rb_enc_codelen(c, enc);
 
-	if (c != save || (argc > 0 && !tr_find(c, squeez, del, nodel))) {
-	    if (t != s) rb_enc_mbcput(c, t, enc);
-	    save = c;
-	    t += clen;
+    if (single_byte_optimizable(str) || rb_enc_str_asciionly_p(str)) {
+        while (s < send) {
+	    unsigned int c = *s++ & 0xff;
+	    if (c != save || (argc > 0 && !tr_find(c, squeez, del, nodel))) {
+	        *t++ = save = c;
+	    }
+	}
+    } else {
+        while (s < send) {
+	    unsigned int c = rb_enc_codepoint(s, send, enc);
+	    int clen = rb_enc_codelen(c, enc);
+
+	    if (c != save || (argc > 0 && !tr_find(c, squeez, del, nodel))) {
+	        if (t != s) rb_enc_mbcput(c, t, enc);
+		save = c;
+		t += clen;
+	    }
+	    s += clen;
 	}
-	s += clen;
     }
+
     *t = '\0';
     if (t - RSTRING_PTR(str) != RSTRING_LEN(str)) {
 	STR_SET_LEN(str, t - RSTRING_PTR(str));
@@ -4863,6 +4874,7 @@ rb_str_count(int argc, VALUE *argv, VALU
     VALUE del = 0, nodel = 0;
     char *s, *send;
     int i;
+    int single_byte_targets = 1;
 
     if (argc < 1) {
 	rb_raise(rb_eArgError, "wrong number of arguments");
@@ -4873,21 +4885,34 @@ rb_str_count(int argc, VALUE *argv, VALU
 	StringValue(s);
 	enc = rb_enc_check(str, s);
 	tr_setup_table(s, table,i==0, &del, &nodel, enc);
+	if (RSTRING_LEN(s)>1) single_byte_targets = 0;
     }
 
     s = RSTRING_PTR(str);
     if (!s || RSTRING_LEN(str) == 0) return INT2FIX(0);
     send = RSTRING_END(str);
     i = 0;
-    while (s < send) {
-	unsigned int c = rb_enc_codepoint(s, send, enc);
-	int clen = rb_enc_codelen(c, enc);
 
-	if (tr_find(c, table, del, nodel)) {
-	    i++;
+    if (single_byte_optimizable(str) || single_byte_targets) {
+        while (s < send) {
+	    unsigned int c = *s;
+	    if (tr_find(c, table, del, nodel)) {
+	        i++;
+	    }
+	    s++;
+	}
+    } else {
+        while (s < send) {
+	    unsigned int c = rb_enc_codepoint(s, send, enc);
+	    int clen = rb_enc_codelen(c, enc);
+
+	    if (tr_find(c, table, del, nodel)) {
+	        i++;
+	    }
+	    s += clen;
 	}
-	s += clen;
     }
+
     return INT2NUM(i);
 }
 
@@ -5617,19 +5642,29 @@ rb_str_rstrip_bang(VALUE str)
     s = RSTRING_PTR(str);
     if (!s || RSTRING_LEN(str) == 0) return Qnil;
     t = e = RSTRING_END(str);
-    while (s < e) {
-	unsigned int cc = rb_enc_codepoint(s, e, enc);
 
-	if (!cc || rb_enc_isspace(cc, enc)) {
-	    if (!space_seen) t = s;
-	    space_seen = Qtrue;
-	}
-	else {
-	    space_seen = Qfalse;
+    if (single_byte_optimizable(str) || rb_enc_str_asciionly_p(str)) {
+        /* remove trailing '\0's */
+        while (s < t && t[-1] == '\0') t--;
+      
+	/* remove trailing spaces */
+	while (s < t && rb_enc_isspace(*(t-1), enc)) t--;
+    } else {
+        while (s < e) {
+	    unsigned int cc = rb_enc_codepoint(s, e, enc);
+
+	    if (!cc || rb_enc_isspace(cc, enc)) {
+	        if (!space_seen) t = s;
+		space_seen = Qtrue;
+	    }
+	    else {
+	        space_seen = Qfalse;
+	    }
+	    s += rb_enc_codelen(cc, enc);
 	}
-	s += rb_enc_codelen(cc, enc);
+	if (!space_seen) t = s;
     }
-    if (!space_seen) t = s;
+
     if (t < e) {
 	rb_str_modify(str);
 	STR_SET_LEN(str, t-RSTRING_PTR(str));

In This Thread

Prev Next