【Xbox360】 XNA Game Studio その3 【C#】at GAMEDEV【Xbox360】 XNA Game Studio その3 【C#】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト556:名前は開発中のものです。 07/09/09 01:44:08 hNSZKalt >>550 何がしたいって、541で書いてくれてるじゃないか どんなゲームジャンルのどんな技術も集約した環境にするんだろう でかくなるといっても、際限なく続いていくほど残ってもなかろう 後は経路探索とかリアルタイムに変形するアニメーション関係の拡張くらいじゃないの? それも必要ないと思うんなら今まで通りC++で自前で作ればいいんじゃない 557:499 ◆gJulfOQblk 07/09/09 06:55:36 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 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch