[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/10 00:13 / Filesize : 196 KB / Number-of Response : 828
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Xbox360】 XNA Game Studio その3 【C#】



557 名前:499 ◆gJulfOQblk mailto:sage [2007/09/09(日) 06:55:36 ID:0UB6SgLv]
・ XNA - パフォーマンス (X3)
 ・ XNA の動作する構造
  ・ Xbox シリーズのプログラムはカーネルモードで動く (360 にはその上にハイパバイザがあり、署名されていないコードは動かないようになっている。)
  ・ ただし、それを XNA にも適用すると動けないので、本来使われていない ユーザモード (JITおよびユーティリティコード) を使うことで非署名コードが動くように。
  ・ つまり、カーネルモードへの呼び出し (本来必要がない) が入るため、原理的には少し遅くなる。 (1システムコール == 約4us)
 ・ というわけで、必要な最適化のひとつは、システムコールの回数の削減。
  ・ Graphics コールは可能な限りバッチ化される
  ・ バッチできない API については若干数が多いので省略 (オリジナルの Gamefest の動画を参照w)
 ・ Effect.Clone をしてパラメータを変更しないようにすると速い (SetValue や Apply は BasicEffect の場合 20ms ほど時間がかかる)
 ・ SaveStateMode.SaveState を使わない (StateBlock の呼び出しに 34.5ms もかかるという…)
 ・ 数学演算は可能な限り参照にし、(Vector3 の madd で 1.6倍程度の差)もっと可能な場合はインラインにする (通常演算子の3.8倍)
  ・ 現在 SIMD をサポートしていない上、Vector3 の演算メソッド/演算子は、.NET の仕様でインライン化される条件を満たしていない (>>499注釈)
  ・ まぁ下手に SIMD にするのはマズい。(SSE と違ってパイプラインがものすごく深いため、機械的に置換すると遅すぎる)
 ・ Thread は、複数のコアへの分配をサポートしない (明示的に指定されない場合、コア0のスレッド1で開始される)
 ・ ThreadPool は、最適化されていない (ため、遅い?)
 ・ フレームワークとスレッドセーフ
  ・ オーディオとネットワーク(2.0以降) はスレッドセーフ
  ・ GraphicsDevice は、少しだけスレッドセーフ
   ・ リソースの作成と SetData (もちろん今現在使われていないモノだけね。) は非同期で行える
  ・ ContentManager はスレッドセーフではない
  ・ 入力は「スレッド化できない」 (メインスレッド上で読み取ること)
 ・ Windows でチューニングしろって言ってたけど…>>499個人的にはどれだけ効果があるか微妙

# 2048文字に収めるのが大変w






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<196KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef