[#43271] rails がこけます — "Hideo Konami" <konami@...>

小波です。

15 messages 2007/03/18
[#43273] Re: rails がこけます — 山崎雄介 <y-yamasaki@...> 2007/03/19

山崎です。

[#43274] rubyスクリプト内で、unixコマンドを実行 — 上間 健 <mugenkai15@...> 2007/03/19

こんにちは、上間です。

[#43286] モジュールのinclude先の名前 — Sato Hiroshi <hirocy.f01@...>

hirocyです.

23 messages 2007/03/22
[#43290] system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

お世話になっております。佐藤です。

[#43291] Re: system(wget url) について — Yukiharu Yabuki <yabuki@...> 2007/03/22

こんにちは

[#43293] Re: system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

矢吹さん有難うございます。佐藤です。

[#43294] Re: system(wget url) について — Yukihiro Matsumoto <matz@...> 2007/03/22

まつもと ゆきひろです

[#43295] Re: system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

まつもとゆきひろさん有難うございます。佐藤です。

[ruby-list:43341] Re: 質問:参照されなくなったデータの行方(ちゃんとGCされたか)を知る方法は?

From: ruby-philia@...
Date: 2007-03-30 17:39:46 UTC
List: ruby-list #43341
こんにちは、ruby-philiaと申します。
昼夜の温度差が激しく風邪をひきやすい季節になってきました。みなさんいかがお過ごしでしょうか?


なかださん、佐々木さん、だんさん
ご意見やアドバイスありがとうございました。そしてお礼・報告が遅くなりまして申し訳ありません。


とりあえず、メモリの増減については開発環境がWindowsなので、タスクマネージャでみることにしまし
た。
結論としては、メモリ使用量が増え続けるのでは?といったような心配は不要でした。
(実はタスクマネージャでメモリ使用量を監視できること自体は知っていましたが、イメージ名の中にシ
ューティングゲームの名前が見つからなかったので、あれれ?おかしいな?見られないのかな?と思い
込んでいたのが原因でした。シューティングゲームの名前ではなくruby.exeのメモリ使用量を見れば良
かったのです…あほですね。)
また、ObjectSpace.define_finalizerを使ってみたら、GCと含めていろいろと興味深い発見をしました
。
これについてはまた近いうちに再質問させて頂く予定です。
weakrefについては政治的な問題(←非常に個人的なものです)で、今回は関わらないでおこうと思います
。
その主な理由は、以下の2点です。
1)オブジェクト破壊のタイミングが、ObjectSpace.define_finalizerを使うより分かり難そうだった
。
weakrefというものがどのようなものか私はよくわかっていないのですが、weakrefで参照しているオブ
ジェクトが利用可能(開放されていない)か?利用不可能(開放されてしまった)か?を、常に監視す
るプログラムを別に書く必要がありそうだ。と非常に面倒くさいことになりそうな展開が予想されたか
らです。(だいたいあっているでしょうか?)
2)タスクマネージャよりわかりにくそうだった。タスクマネージャでこと足りてしまった。

また、delete_ifやnil>compact!については、私が思考錯誤した途中の段階で、
利点が少ないという理由で消えていったものだったりします。今後開発を進めていって、やっぱりこっ
ちの方が良かったなぁということになれば戻ってくることと思われます。

delete_ifについては、消すためだけの全要素めぐりをするのは、コスト的にもったいないのではないか
?と思ったので使いませんでした。そのコスト差も非常に微小なものでしょうが…。
シューティングゲームなので、非常に時間コストにシビアに作らなければならない、というのは条件の
一つだと思ったからです。
delete_ifが時間がかかりそうだというのは私の思い込みでしかないので、最終的にはどちらが早いかを
比較して報告できたらいいなと思っております。

また、nil>compactについては、一旦自分自身をnilに置き換えなければならず、eachからeach_with_i
ndexに変更して、deleteの代わりにchars[index] = nilとしておいて、後からcompact!で消してしまう
という方法しか私が思いつかず、余り良いアイデアとは思えなかったというのもあります。
この方法だと、indexという変数が増えてしまい、特に理由は無いけどなんとなく嫌だったというのが理
由です。
この方法以外のよりスマートな方法で、nil>compact!ができるのであれば是非教えてください。

いずれにせよ、
1)何らかの方法で削除フラグを立てる
2)削除する
という二度手間になってスマートではないだろうと、私は判断したからなのです。
死んだら、後で消してもらえるようにフラグを立てておくよりも、その場ですぐに削除の方が、単純だ
と思ったからというのも理由の一つです。

とはいえ、現在の実装方法は、従来のシューティングゲームの手法に比べると、トリッキーな実装とい
わざるを得ません。
しかしながら、今までシューティングゲームを作って来た人にとっては、非常に取り付きにくいものに
なってしまうだろうとは思いましたが、これからシューティングゲームをいじってみたいという人にと
っては、取り付き安かったりするのではないか?という思いもあるので、この方法で作りこんでいく予
定です。
最終的には、いろいろな手法の比較検討考察などを行いたいと考えています。
これ以上はシューティングゲームの話題になるでしょうから、Rubyの話題からは逸脱しすぎると思いま
すので、もし興味がありましたらよろしければ私のブログの方にでもお願いいたします。

http://blog.goo.ne.jp/ruby-philia

In This Thread

Prev Next