[#39863] forループの速度 — Masahiro Sato <msato@...>

15 messages 2004/07/20

[#39868] イテレータとfor文 — OOTANI TAKASHI <otn@...5.so-net.ne.jp>

大谷と申します。

31 messages 2004/07/20
[#39886] Re: イテレータとfor文 — Tietew <tietew-ml-ruby-list@...> 2004/07/21

[ruby-list:39883] Re: forループの速度

From: SASADA Koichi <ko1@...>
Date: 2004-07-21 02:44:40 UTC
List: ruby-list #39883
  Masahiro Sato <msato@ims.ac.jp> wrote :
    [ [ruby-list:39875] Re: forループの速度 ]
    at Wed, 21 Jul 2004 09:51:46 +0900

 ささだです.

> むしろforより遅くなってしまいました。

a)
  i = 0
 while i<x
    i+= 1
    ...
  end

 は,


b.1)
 x.times{|i|
    ...
  }

 もしくは

b.2)
 (0...x).each{|i|
    ...
  }

 もしくは

b.3)
  for i in 0...x
    ...
  end

(多分,b.1 - b.3 は同じくらいの速さになるんじゃないかと思い
ます.多分)

 と比較して,

  1) i<x
  2) i+1

 という"Rubyメソッドの呼び出し"が余計に必要になるため,遅くな
ると考えられます.

 Fixnum#times や Range#each は,これらを C言語のレベルで実装
し,実行しているので,速いです.

-- 
// SASADA Koichi at atdot dot net
//


In This Thread