くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2012-07-24

日記

メインPCのファンを交換した。

いままでついてたケースファンを外すと前面についてたフィルタが埃で目詰まりしてた。 これが冷えない原因じゃねーの……。外さないと見えない場所についてたのでフィルタがついてること自体知らなかったぜ。

ファンとかクーラー買ってきたのは無駄足かと思いつつも取り付けたが、アイドル時でもだいぶ静かになったので無駄ではなかったようだ。 ケースファンは今まで常時1000rpmくらいだったのがPWM制御対応のものにしたのでアイドル時は800rpmくらいなってるしね。

さすがにエンコ時はそこそこうるさくなるものの、CPUクーラーも12cmのでかいファンをゆっくり回すタイプにしたので耳障りな高音がない。 CPU温度もエンコ終了直後で50℃切ってた。よく冷えてるわ。 あとはたまにケースファンを外して掃除してやることにしよう。

[Ruby] MacRubyが遅い

MacBookのOSをLionにしたら自作の実況用2chブラウザが動かなくなってしまった。

RubyCocoaで作ってあったのでそろそろMacRubyに移行すんべかと作業開始。 MacRubyはちょっと前までとんとリリースが無くて心配だったが、最近はちゃんとリリースされているようで一ヶ月程前に出てた0.12を入れて使った。

Xcodeは4になってからいじってなかったのでめちゃくちゃ変わってて操作がさっぱりわからないのをなんとか頑張りつつ。 RubyCocoaとMacRubyの違いはなんとなくわかっていたので1、そこを埋めていけばいいくらいだった。

アドレス指定でスレを開いて表示、までは思ったよりすぐ出来たんだが、なんだかとても遅い。 従来なら読み込み~表示に数秒だったのに30秒くらいかかってるわ。

詳しく見てみるとまずはdatを読み込んだあとの文字置き換えだった。&みたいなこれ。これなんて言うんだか忘れたが、ともかくこれを置き換えるのにgsub!連打してるのに10秒くらいかかってる。gsubで検索する文字列の方が文字列リテラルだったのでなんとなく正規表現リテラルにしてみたら0.2秒で終わった。うーむ、この程度でそんなに遅くなるものか?とにかくこれで読み込みは速くなったが。

レンダリングにまだまだ20秒近くもかかってるなぁ。実際レンダリングが時間かかってるわけじゃないだろうからその前だな。いろいろ調べてみるとdatを分割したあとHTMLにするのにERBでテンプレート適用してるのが遅いようだ。なんでだよー。ERBの中身を見るとひたすらconcatしてるな。これが遅いのかと思ったのでStringIOとwriteに置き換えてみるが変わらず。お手上げだなこりゃ。

なんでMacRubyやってんの?と聞かれたのでRubyCocoaで作ってたのがLionで動かなくなってねぇ、RubyCocoaのLion対応版使えばいいのかもしれないけれど……といいつつRubyCocoaのLion対応版を落として入れてみたら……リビルドすら必要なく動いたじゃないですか。おおっと。リビルドくらい必要なもんだと思ってたけど確かにいらねーかもな! というわけでMacRubyはお役御免とあいなりました。

しかしMacRubyの文字列操作がやばいくらいに遅いのはなんなんだ。実際の中身はNSStringになってるからとかいう話なんだろうが、似たようなことやってるIronRubyだってこんなに遅くはないぜ。IronRubyの場合は.NETのStringじゃなくて独自のMutableStringとか使ってやってるけどさ。文字列操作が使えないRubyってRubyの嬉しさがかなり無いんだけど、俺の使い方が何か間違ってるんだろうか。いや、でも、普通の使い方しかしてないんだけどなぁ。

RubyCocoaもメンテされてるのでMacRubyはもう見なかったことにしてもいいのかもな。 文法的にはMacRubyの方がいろいろと自然でいいんですけどね。

  1. しかし、どちらもドキュメントは……なのでなんとなくしかわからない。 


ページのトップへ | トップ «前の日記(2012-07-18) 最新 次の日記(2012-07-31)» | 編集 | kumaryu.net by kumaryu