ごとけんです
ぼくは単にn回繰り返ししたいときは Integer のメソッドを
呼ぶのも変な気がするので
def repeat(limit)
raize "missing block" unless iterator?
1.step(limit,1){res = yield}
res
end
と,見たくないものは隠してるのですが,
油断すると for i in 1..n と書いてしまいます(^^;;
In message "[ruby-list:11690] Re: Numeric#step の増減方向"
on 99/01/24, Sinichiro Dezawa <dezawa / miya.fujifilm.co.jp> writes:
> ところで、step +1 でよい時はどっちちの方が軽いのでしょう?
空(カラ)ループを回したらこんなん出ました:
Ruby-1.2.2
>>> 100000 times:
step: utime => 0.233333, stime => 0.0
for: utime => 0.516667, stime => 0.0
>>> 1000000 times:
step: utime => 2.25, stime => 0.0
for: utime => 5.16667, stime => 0.0
>>> 10000000 times:
step: utime => 22.4333, stime => 0.0
for: utime => 51.7333, stime => 0.0
Ruby-1.3
>>> 100000 times:
step: utime => 0.1, stime => 0.0
for: utime => 0.133333, stime => 0.0
>>> 1000000 times:
step: utime => 1.1, stime => 0.0
for: utime => 1.36667, stime => 0.0
>>> 10000000 times:
step: utime => 10.8833, stime => 0.0
for: utime => 13.75, stime => 0.0
ってわけで,1.2 だと倍くらい step が速いみたいです.
もっとも,空ループですので,実際は気にならないかも知れません.
しかし 1.3 は速いですね.ぱちぱちぱちぱち
# 使ったプログラムを最後につけときます.
-- gotoken
print "Ruby-", VERSION, "\n"
for n in [100000,1000000]
a = Time.times
1.step(n,1){}
b = Time.times
for i in 1..n; end
c = Time.times
print ">>> #{format('%8d', n)} times:\n"
print " step: utime => #{b.utime - a.utime}, "
print "stime => #{b.stime - a.stime}\n"
print " for: utime => #{b.utime - a.utime}, "
print "stime => #{b.stime - a.stime}\n"
end