[#47049] fileのopenに関する動作についての質問 — 高橋作郎 <sakurou3960@...>

はじめまして。

14 messages 2010/05/04

[ruby-list:47076] Re: MacRuby 0.6の速度

From: nagachika <nagachika00@...>
Date: 2010-05-10 16:14:29 UTC
List: ruby-list #47076
nagachika と申します。

具体的にどんなコードなのかわからないと何とも言えないのですが、
少し思いあたることがあります。

去年 MacRuby 0.5 の時に AO Bench を 1.8, 1.9, MacRuby で比較しました。

http://d.hatena.ne.jp/nagachika/20091115/aobench_on_ruby_and_macruby

この時に気がついたこととして、MacRuby ではファイル出力でバッファリングを
全くしていないらしい、ということがあります。
今 0.6 で再度ベンチマークを取ろうとしてみたところ、この点は変化ないみたいです。
# ちなみに 0.6 は 0.5 より AO Bench の結果が遅くなっているみたいでした。

> ツールはTeXのDVIファイルを読みつつ所々書き換えてDVIファイルとして書き出すというもので,
> バイト単位でIO処理が大半を占めていると思われるものです。
ということですので、もし出力をこまかく行なっていたらその度にシステムコールを
呼んでしまうので遅くなっている可能性があると思います。
一旦文字列バッファに溜めておいてまとめて出力してみるとどうでしょうか。

> rubyスクリプトがObjective Cと同等のバイナリになると勝手に思っていたのですが,
> LLVM用の中間コードになるとすれば同等ではないですよね。
同等というのがどういうことかわからないのですが、macrubyc でコンパイルすると
実行可能形式のバイナリになります。

> あと,試しに -c または -C オプションを付けて
>  macruby -c main.rb sub1.rb sub2.rb sub3.rb
> のように場合,/usr/local/binmacrubycの116行目で存在しないファイルを削除しようとしてエラーになり,
わたしの手元では上記のようなコマンドラインでは再現しませんでした。
もしかして、コマンドライン引数に同じスクリプトを複数回渡していませんか?
そうすると確かに Errno::ENOENT が発生しています。

なお MacRuby の不具合報告は MacRuby の ML か Trac のチケットのほうにされるのが良いと思います。
https://www.macruby.org/trac/newticket

#MacRuby の話題は ruby-list でするのに適切なのかな、とちょっと気後れしつつ

In This Thread

Prev Next