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

はじめまして。

14 messages 2010/05/04

[ruby-list:47073] MacRuby 0.6の速度

From: "ne.jp.net.at@..." <ne.jp.net.at@...>
Date: 2010-05-10 06:58:54 UTC
List: ruby-list #47073
yaokiと申します。

MacRuby 0.6が出た(かなり安定しているらしい)ということで,
試しに手元のツールを macrubyc でバイナリの実行ファイルにしてみたのですが,
速度が期待したより(とても)遅かったです。

ツールはTeXのDVIファイルを読みつつ所々書き換えてDVIファイルとして書き出すというもので,
バイト単位でIO処理が大半を占めていると思われるものです。

WindowsとMacOSで比較してみたところ

・WinXP SP2/CoreDuo 1.66GHz/1.5GB RAM/ActiveScriptRuby 1.8.7-i386-mswin32
  exerbバイナリ:60秒前後

・MacOS X 6.3/Core2Duo 2.0GHz/4.0GB RAM/Ruby 1.9.1p243 i386-darwin10.2.0(ソースからコンパイル)
  Rubyインタプリタでrubyスクリプトを実行:40秒

・同Macで,MacRuby 0.6のmacrubycでコンパイルしたバイナリ:120秒前後

macrubycでのコンパイルは
  macrubyc main.rb sub1.rb sub2.rb sub3.rb
のようにしました。

rubyスクリプトがObjective Cと同等のバイナリになると勝手に思っていたのですが,
LLVM用の中間コードになるとすれば同等ではないですよね。
それでもYARVよりこれほど差が開くとは…という感じなのですが,
何かやり方がまずいのでしょうか。

あと,試しに -c または -C オプションを付けて
  macruby -c main.rb sub1.rb sub2.rb sub3.rb
のように場合,/usr/local/binmacrubycの116行目で存在しないファイルを削除しようとしてエラーになり,
  @tmpfiles.each { |x| File.delete(x) }
を
  @tmpfiles.each { |x| if File.exist?(x) then File.delete(x) end }
としました。
ただ,-c,-Cは .o,.rbo などのオブジェクトファイル作るためのもののようなので,
本件とは直接は関係無いです(と思います)。


In This Thread

Prev Next