2009-02-08
AOベンチを移植した
|yarv2llvmにAOベンチを移植しました。AOベンチはSyoyo Fujitaさんが作成したレンダラでベンチマークに使うため色々な言語に移植されています。詳しくは、http://lucille.atso-net.jp/aobench/を参照してください。
今回移植したyarv2llvm版はRuby1.9でも動くのですが、yarv2llvmに合せているため、もっといい書き方があるのにーって思うことと思います。特に、ファイルのopenをまだ作っていないので、イメージファイルを標準出力に出すという暴挙に出ています。
ベンチマークのソースはこれです。
yarv2llvmとruby1.9で動かしてみました。
time (ruby19 yarv2llvm.rb --no-type-message sample/ao-render.rb > ao.ppm) real 3m20.883s user 3m1.982s sys 0m0.809s time (ruby19 sample/ao-render.rb > ao2.ppm) real 9m16.033s user 8m34.140s sys 0m0.155s
トラックバック - http://d.hatena.ne.jp/miura1729/20090208/1234084920
リンク元
- 27 http://www.rubyist.net/~kazu/samidare/
- 6 http://twitturls.com/
- 5 http://lucille.atso-net.jp/aobench/
- 4 http://a.hatena.ne.jp/cranebird/
- 3 http://a.hatena.ne.jp/asip/
- 3 http://a.hatena.ne.jp/fujita-y/detail
- 3 http://github.com/miura1729/yarv2llvm/tree/master
- 2 http://a.hatena.ne.jp/cranebird/mobile
- 2 http://github.com/miura1729
- 1 http://d.hatena.ne.jp/diarylist?of=100&mode=rss&type=public
速度の件、私もそう思います。配列とオブジェクトがネックになっていると思います。とりあえず、yarv2llvmで作ったメソッドはRubyで定義したものと区別無く使えるという原則は守りたいと思うので、独自のランタイムは最後の手段にして、うまくキャッシュできないか考えてみます。実は、まっいいかー、動いたしと思ったのですが、活を入れてくださってありがとうございます。
実際問題、3倍速いだけだと数値計算には使ってくれないし、文字列処理なんかだとメリットがないという状態かなと思います。せめてLuaくらい(10倍くらいだったと思います)のパフォーマンスが出ると色々使ってくれそうなんですけど。といっても、実用性が無くても面白ければいいのですけど。