[ruby-list:50772] Re: 1.next は 1.succ よりなぜ遅い?
From:
Yusuke Endoh <mame@...>
Date:
2019-05-31 00:26:27 UTC
List:
ruby-list #50772
こんにちは、遠藤といいます。
> CSV を速くするため,loop の代わりに while を使う,
まめ知識ですが、MJIT が有効になると、特定条件下で while より loop のほうが早くなるケースもあります。
現時点では相当限定的なので、多くのケースでは while のほうが速いままだと思いますが、
将来どんな最適化が入ってどう性能特性が変わるかは、予見しがたいです。
なので、やっぱりそういうことは考えないほうが良いと思います。
↓遠藤の環境では loop(というか Integer#times)のほうが速くなったケース(ruby --jit で実行)。
```
def do_some_task
end
def foo_while
count = 0
while count < 10
n = 0
while n < 1_000_000
do_some_task
do_some_task
do_some_task
n += 1
end
count += 1
end
end
def foo_times
count = 0
while count < 10
1_000_000.times do
do_some_task
do_some_task
do_some_task
end
count += 1
end
end
t = Time.now
foo_while
p Time.now - t #=> 0.63 秒
t = Time.now
foo_times
p Time.now - t #=> 0.73 秒
```
2019年5月31日(金) 7:46 5.5 <5.5@moji.gr.jp>:
> On 2019/05/30 20:13, Koichi Sasada wrote:
> > 正直、そこが効くアプリは、多分ほとんどないと思うので、あんまり気にしなく
> > て良いんじゃないかと思います。速くなったららっきーと思って下さい。
>
> きっとそうなのでしょうね。
>
> ただ,先日,CSV を速くするため,loop の代わりに while を使う,
> という話
> https://slide.rabbit-shocker.org/authors/kou/rubykaigi-2019/
> を目にして「ソコまでやるんかー!!!」と驚いたところだったの
> で,それならメソッド名の選択に気を配ったほうがいい場合もある
> のだなろうな,と思った次第です。
>
> --
> 5.5@moji.gr.jp
>