0

ゲームコードをデバッグしようとしています。iOS 用のゲームを開発していますが、コードで多くの IF ステートメントを使用しています。これらを使用すると、パフォーマンスにわずかな影響があるかどうかを知りたい.

ありがとう

4

2 に答える 2

2

もちろん、分岐時にはパフォーマンス ヒットがあります。

しかし、分岐がなければまともなプログラムは作れません。

したがってif、 を使用し、プログラムのプロファイリングによってコード内の特定の場所に問題が検出された場合は、分岐の数を減らすか、ループから除外できるかどうかを確認してください。ただし、コードが明確である限り、あまり注意を払わないでください。

ほとんどの場合、多数の最初の影響はif読みやすさと保守性です。しかし、時期尚早の最適化は、多くの場合、これらのトピックに大きな打撃を与えます。

于 2012-06-19T07:36:39.130 に答える
2

if ステートメントをどこで使用したかによって異なります。if を正しい方法で使用することに関しては、ある程度のパフォーマンスがあります。

私はそれらのいくつかを述べます

  • それが他のものよりも前に発生する可能性が最も高い場合を常に使用し、より一般的なケースを使用してから、発生する可能性が低いケースを使用します
  • ループの前に if を使用してみてください。たとえば

これの代わりに

BOOL isCase1 = [self isCase1];
for (int i = 0 ; i < 10000 ; i ++)
{
   if(isCase1)
   {
       //do something
   }
   else
   {
      //do some other thing
   }
}

これを使って

   BOOL isCase1 = [self isCase1];

   if(isCase1)
   {
       for (int i = 0 ; i < 10000 ; i ++)
       {
       }
   }
   else
   {
       for (int i = 0 ; i < 10000 ; i ++)
       {
       }
   }

確信が持てる前にパフォーマンスを改善する必要があると仮定しないでください。ほとんどの場合、パフォーマンスは良好です。何らかのコードがパフォーマンスの問題を引き起こしていると確信している場合は、それを改善します (コードを時期尚早に最適化しないでください)。

これらは一部のケースで、他にもたくさんあります

アップデート:

あなたができる他のいくつかの役立つこと、ブール値チェックステートメントをキャッシュする

例えば

それ以外の

for (int i = 0 ; i < 10000 ; i ++)
{
   if([self isCase1]) //Do some thing
}

使用する

//Cache the result inside a variable
BOOL isCase = [self isCase1];
for (int i = 0 ; i < 10000 ; i ++)
{
   if(isCase) //Do some thing
}
于 2012-06-19T07:40:32.680 に答える