EasyFAQ/80

Last-modified: 2009-08-14 (金) 09:43:43

途中で突然重くなります

投稿者
重要度
状態
カテゴリ
HSPバージョン
E3Dバージョン
回答

ここから下を自由に編集してください。
上の投稿情報は安易に編集するとFAQリストのリストアップに支障が出るものもあります。
よく分からない方は分かる人に聞いてみてください。

  • 同じモデル(ポリゴン数は少ないです)を30個ほど呼び出して、いますが、はじめは60fpsくらい楽勝なんですが、2~3分たつと急にfpsが15くらいになって重くなります。E3Dが原因なのか、その可能性はないのかわかりません。 -- イエティ? 2009-07-27 (月) 19:49:56
  • 読み込みなど一回だけやればいいところ(初期化といわれる部分で)を、ループ内で繰り返しているんだと思います。メインループ内から読み込みや変数管理などにジャンプする場合、規定回数でストップするように書いたつもりなのに、その後も延々とジャンプしているのかも知れませんね。いらなくなったデータを削除していないってパターンも多いそうですが、これは小さいデータであればさほど重大な問題にはならないと思います。本格派のプログラマーさんにとっては「プライドが許さない!」らしいですけど。自動で変数を確保するように書いて延々巨大化する場合なら重大問題ですね。おおよそそのあたりではないでしょうか??? -- 2009-07-27 (月) 21:23:54
  • 素早い回答ありがとうございます。同じモデルを読み込んで、電車のように動かしています。ループの中で、クォータニオンをモデルの数の3倍(約90個)と、モデルの座標x、y、zも同数用意して、先頭のモデルの情報を毎回記録しています。それをマイフレーム保存して、3フレームごとに読み出しをして後ろのモデルにセットしています。このようなことは、たくさん変数を操作するので、ガベージコレクション?とかいうものが働くのではないかとも考えました。どうでしょうか? -- イエティ? 2009-07-27 (月) 22:21:05
  • イエティさんの実メモリと、プログラム実行中にhsp3.exeが使用しているメモリ(タスクマネージャで見られます)は、どのような感じでしょう?? システムの空きメモリは十分にあるでしょうか? E3Dに限らず、空きメモリが少なくなると極端に速度が落ちます。
    あと、ガベージコレクションについてですが、明らかに使用されていない変数とかであれば、自動で解放してくれると思いますが、イエティさんのケースでは、明らかに使用中の変数なので解放されないかと思うのですが…どうなんでしょう?? (^^; -- ロコ? 2009-07-27 (月) 22:55:09
  • ありがとうございます。確かに配列はいつもかも使ってます。タスクマネージャを見たら、fpsがガクンと落ちる時にCPU使用率が100%になってました。キー操作でモデルを動かしていますが、しばらく操作をやめるとまたもとのようにfpsが回復して、操作できるようなります。また、操作できるときでもCU使用率は80%~90%です。リソースモニタで見るとディスクのところが使用率があがってました。物理メモリの空きメモリは5MBでした。 -- イエティ? 2009-07-28 (火) 00:20:13
  • 速度が落ちる決定的なきっかけはハードディスクへのスワップですね。最初は好調だと言う事は”毎回記録している情報”がそのまま増え続けてるんじゃないでしょうか。最初の車両から取得した情報を最後の車両にセットした後削除すればいいのでは?あるいはメモリーリングと言う記録方法を調べてみるのもいいかもしれません。おちゃっこさんの3D格ゲーのサンプルの中にそう言う機能が組みこまれてます。リング状に構成された変数群の中で順次上書きしていく方法なので、どれだけ書き換えても変数群が巨大化すると言う事はありません。あと、これだけ明らかに重くなっているのなら、3フレームごとに記録するとか工夫が必要でしょうね。 -- 2009-07-28 (火) 00:51:19
  • ソースがないとなんとも言えないだろ・・・ 毎回クォータニオンを作成してるとか、ライトを作成してるとか、マシンスペックの問題とか色々。 -- ナナ? 2009-07-28 (火) 10:09:51
  • ナナさんありがとうございます。見てください。http://iepee.seesaa.net/?1248768549 -- イエティ? 2009-07-28 (火) 17:10:52
  • 問題になるような所は無いようですが。胴体を300個くらいだしてもウチでは60出てたんでマシンスペックの問題ではないかと。pppが長文書く前に他の方にもテストしてもらうヨロシ。 -- ナナ? 2009-07-28 (火) 22:08:42
  • 同じく私の環境では5分放置しても速度落ちませんでした。このソースで使うメモリはせいぜい20MB弱なので、空きメモリ5MBってのは明らかにおかしいです。物理メモリは全部で何MBありますか?あと細かい事ですがDGposとhistory_posはdimでなくddimの方がいいです。 -- ぼおん? 2009-07-28 (火) 22:37:31
  • おー!こりゃ美しい動きですね。こちらでも数分動かしましたが問題出ませんでしたよ。マシン固有のスペック的な問題のようですね。ただ、キーを三つ以上同時に押した時に警告音が出ました。が、これはOS側から発せられる警告なので、どの作品でも発生する問題です。避けたほうがいいとされています。それ以外では問題なかったですよ。 -- 2009-07-29 (水) 17:11:12
  • ありがとうございました。結局マシンスペックの問題なんですね -- イエティ? 2009-07-29 (水) 18:37:51
  • なんという無名のぷぺぽ・・・ -- ORZ? 2009-07-31 (金) 22:47:41