0

私は現在、画像処理関連の iPhone プロジェクトに取り組んでおり、デバッグ ビルドを使用してデバイスで初期テストを実行しました。控えめに言っても、パフォーマンスは残念でした。リリース ビルドに切り替えたところ、パフォーマンスが突然最高になりました。

Windows 開発者としての私の経験から判断すると、リリース モードに切り替えるだけで、これほど大きな利益 (リリースとデバッグで数桁速くなる) は見たことがありません。iOS 自体にほとんどの重労働を任せるアプリケーションでは特にそうではありません。リリース モードで MonoTouch が非常に高速である理由を説明したい人はいますか?

4

1 に答える 1

1

いくつかの理由が考えられますが、多くの詳細を提供していません。最も一般的な理由は次のとおりです。

  • まず、最適化によってデバッグが難しくなるため、明らかなコードはデバッグ構成では最適化されません。

  • デバッグ ビルドでは、リリース ビルドと比較して追加のコードを生成する必要もあります (ネイティブ実行可能ファイルの最終的なネイティブ実行可能サイズを比較して、それがどれだけ表現できるかを把握してください)。

  • デバッグ シンボル (.mdb ファイル) は実行時に読み込まれます。これにより、アプリケーションの起動が遅くなりますが、追加のメモリが必要になるため、一部のアプリケーションに影響を与える可能性があります。

  • マネージ リンカーは、リリース ビルドで、UIKit バインディング内のすべての UI スレッド チェックを削除します (つまり、デバッグ ビルドでのみ実行され、スローされるだけです)。アプリケーションがスレッド セーフをチェックするコードでループしている場合、これは (デバッグで) コストがかかる可能性があります。

debugを有効にする以外に、Debugと構成の間で異なる他のオプションがある場合はRelease、パフォーマンスにも影響を与える可能性があります。例えば

  • リリース ビルドは、必要に応じて、LLVM 最適化コンパイラを使用して行うことができます。これは別の AOT エンジンであり、より小さく高速なネイティブ実行可能ファイルを提供します (ただし、コンパイルに時間がかかります)。

アプリケーションに固有の回答が必要な場合は、デバッグ ビルドとリリース ビルドの両方を比較できる Apple Instruments を使用する必要があります。

于 2013-06-21T15:46:56.740 に答える