2011-10-30 23 views
3

私はこの質問が以前に尋ねられたことは知っていますが、誰もそれを解決するための有用な答えを与えていません。私はbox2d物理エンジンを使用するcocos2d iosアプリケーションを持っています。私はそれについて性能テストを行い、CPUはmach_msg_trapに5.6%を費やしています。私が他の質問から集めたものから、mach_msg_trapがあなたのアプリケーションがアイドル状態になった結果、メインスレッドのウエスト時間に過ぎないかのようです。私のアプリケーションは、しかし、アイドルではありません。 50 fpsの領域では、不安定なパフォーマンスとホバリングがあります。追加のパフォーマンスを得るためにこれを設定する方法はありますか?または、これはちょうど私が書いたいくつかの悪いコードの結果です、もしそうなら、私はそれをどのように最適化しますか?mach_msg_trapを最適化する方法


私は、iPod touchの第2世代でデバッグビルドのパフォーマンスをテストしています。これは問題の一部である可能性があります。スプライトバッチで特定のものをグループ化しています。しかし、いくつかのスプライトにはccspritesではない子がありますので、すべてを1つのバッチでグループ化することはできません。私は弾丸のプールを作成し、それを絶えず割り当てて解放するのではなく、作成します。しかし、これは私が不安定なパフォーマンスを得る場所です。ガンが発射を開始すると、フレームレートは10-15fps低下します。私は何をしばらく時間をかけて取っていたのかを追跡しようとしましたが、上位2つのウエイターはglValidateStateで、ccsprite drawとccnode visitを含みます。 2番目の提案時刻waisterはmach_msg_trapです。パフォーマンスを低下させている箇条書きのコードに何が含まれているかを調べる他の方法はありますか?ところで、あなたの本は本当にcocos2dの学習に役立っていました:)

+0

そして、私はサンプルの視点をサンプル時間の実行に切り替えました –

答えて

6

this questionの答えは読んでいますか?

mach_msg_trapは、アイドル状態の時間を無駄にしません。これは、アプリケーションのプロセスが正常に実行されるまで何らかの結果を待つ関数です。もちろん、あなたのアプリがアイドル状態のときにも実行されますが、これがあなたの場合に当てはまるとは思えません。代わりに、フラッシュメモリからファイルをロードするときなどに、5%がディスクI/Oを待つことがあります。

パフォーマンスが「不安定」な場合は、変更や設定ができないシステムレベルの機能で障害を見つけようと時間を無駄にしません。

第2に、パフォーマンスを測定している場所、つまりどのデバイスについて言及していません。あなたがiPhone 3G以上で50 fpsを取得すれば、パフォーマンスは良いとみなされる可能性もあります。さらに、リリースビルドでのみパフォーマンスを測定する必要があります。

個人的には、スプライトシートとテクスチャアトラスをスプライトに使用したり、スプライトや物理オブジェクトを頻繁に作成したり解放したりするのではなく、繰り返し回数を減らすなどベストプラクティスに従っていることを確認することをおすすめしますBox2Dはステップ関数で実行されています。

関連する問題