[#20036] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

16 messages 2003/04/18
[#20045] Re: Roundoff problem with Float and Marshal — nobu.nakada@... 2003/04/20

なかだです。

[#20063] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto) 2003/04/22

まつもと ゆきひろです

[#20097] jcode.rb — akira yamada / やまだあきら <akira@...>

25 messages 2003/04/26
[#20098] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/27

まつもと ゆきひろです

[#20105] Re: jcode.rb — WATANABE Hirofumi <eban@...> 2003/04/28

わたなべです。

[#20108] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/28

まつもと ゆきひろです

[ruby-dev:19985] Re: ""*n

From: matz@... (Yukihiro Matsumoto)
Date: 2003-04-09 18:57:47 UTC
List: ruby-dev #19985
まつもと ゆきひろです

In message "[ruby-dev:19984] Re: ""*n"
    on 03/04/10, Tadayoshi Funaba <tadf@rc5.so-net.ne.jp> writes:

|>      if (len < 0) {
|>  	rb_raise(rb_eArgError, "negative argument");
|>      }
|>      if (LONG_MAX/len <  RSTRING(str)->len) {
|>  	rb_raise(rb_eArgError, "argument too big");
|>      }
|> 
|> のコストはほとんどゼロだと思うんですが。
|
|いや、それは違います。無駄に感じるのは、その後にループがあるからです。

それを含めても

1    str2 = rb_str_new5(str,0, RSTRING(str)->len*len);
2    for (i=0; i<len; i++) {
3	memcpy(RSTRING(str2)->ptr+(i*RSTRING(str)->len),
4	       RSTRING(str)->ptr, RSTRING(str)->len);
5    }
6    RSTRING(str2)->ptr[RSTRING(str2)->len] = '\0';
7
8    OBJ_INFECT(str2, str);
9
10   return str2;

1でstrのdereference
2でi<lenの比較1回(loopの中身は実行しない)
6でdereferenceが2回、代入が1回
8でフラグのコピー

ですから、差は無視できるのではないかと思います。むしろ、負の
数を通しちゃったりするほうがまずいように思えるのですが。
taintの伝搬は長さ0なんだから気にしなくてもよいと思いますが。

                                まつもと ゆきひろ /:|)

In This Thread