いくつかの理由が考えられますが、多くの詳細を提供していません。最も一般的な理由は次のとおりです。
まず、最適化によってデバッグが難しくなるため、明らかなコードはデバッグ構成では最適化されません。
デバッグ ビルドでは、リリース ビルドと比較して追加のコードを生成する必要もあります (ネイティブ実行可能ファイルの最終的なネイティブ実行可能サイズを比較して、それがどれだけ表現できるかを把握してください)。
デバッグ シンボル (.mdb ファイル) は実行時に読み込まれます。これにより、アプリケーションの起動が遅くなりますが、追加のメモリが必要になるため、一部のアプリケーションに影響を与える可能性があります。
マネージ リンカーは、リリース ビルドで、UIKit バインディング内のすべての UI スレッド チェックを削除します (つまり、デバッグ ビルドでのみ実行され、スローされるだけです)。アプリケーションがスレッド セーフをチェックするコードでループしている場合、これは (デバッグで) コストがかかる可能性があります。
debugを有効にする以外に、Debug
と構成の間で異なる他のオプションがある場合はRelease
、パフォーマンスにも影響を与える可能性があります。例えば
- リリース ビルドは、必要に応じて、LLVM 最適化コンパイラを使用して行うことができます。これは別の AOT エンジンであり、より小さく高速なネイティブ実行可能ファイルを提供します (ただし、コンパイルに時間がかかります)。
アプリケーションに固有の回答が必要な場合は、デバッグ ビルドとリリース ビルドの両方を比較できる Apple Instruments を使用する必要があります。