WHITELEAF:Kindle応援サイト

KindleでWEB小説を読もう! Narou.rb 公開中

Fiber の評価

まだコードに組み込んで使ったわけじゃないんで実際の使用感ではないですが。

f = Fiber.new do
  300000.times do
    Fiber.yield false
  end
  Fiber.yield true
end

t = Time.now
until f.resume
end
puts Time.now - t

ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32]
1.390625

C2D E6600 にて実行。

30万回回すのに1.4秒ならうまく使えば普通にゲームにも使えるとおもた。弾オブジェクトが毎フレーム1回 yield するとしても1000オブジェクト程度ならなんとか使える気もする。60FPSで1フレームのうち 1/3 の時間をyield にかけてると考えると重い、という意見になると思うけれど……。

追記:
VisualStduio2008 でビルドした Ruby1.9.1 patchlevel 378 で実行したら 0.46875 秒だった。おいこの速度差は何だ。