[#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:39879] Re: forループの速度:iterator

From: Mitsuo Igarashi <mitsu5@...>
Date: 2004-07-21 01:37:01 UTC
List: ruby-list #39879
Masahiro Sato <msato@ims.ac.jp> wrote:

> 
> 佐藤と申します。
> 
> forループの速度についてなのですが、
> 下記のようなCのサンプルと比較すると、それぞれ下記のように
> なります。(実際にやりたいことは配列の初期化ではなく、
> ちょっとしたデータの生成です)
   ..........
> 
> =====================
> 
> #!/usr/bin/env ruby
> 
> a = Array.new(100000)
> 
> for i in 0..1000
> for j in 0..40000
>   a[i] = 0
> end
> end
> 
> % time ./test.rb 
> range.rb  32.83s user 0.11s system 100% cpu 32.933 total

佐藤さん今日は、 mitsu5 です。

Faq の部類かもしれませんが。

「イテレータと for 文」に触発され、上の for 文を 
test1.rb とします。

times 文を使い、(この文間違っていたらご勘弁ください。)

a = Array.new(100000)
1001.times {|i| 40001.times {|j| a [i]}}

これを、 test2.rb とします。


環境、 Windows XP, Msys です。

$ time ruby test1.rb
real    0m58.078s
user    0m0.015s
sys     0m0.047s

$ time ruby test2.rb
real    0m26.328s
user    0m0.031s
sys     0m0.015s

スピードは2倍となりました。

ただし、この測定方法も、自信はありません。
どなたかフォローをお願いいたします。
-------========--------
mitsu5
mitsu5@ruby.famille.ne.jp

In This Thread