最近、JVisualVMを使用していくつかのコードのプロファイルを作成しましたが、特定のメソッドの1つが、頻繁に呼び出されることと実行時間が遅いことの両方から、多くの実行時間を費やしていることがわかりました。このメソッドは、次のようにifステートメントの大きなブロックで構成されています:(実際のメソッドには、これらが約30個あります)
EcState c = candidate;
if (waypoints.size() > 0)
{
EcState state = defaultDestination();
for (EcState s : waypoints)
{
state.union(s);
}
state.union(this);
return state.isSatisfied(candidate);
}
if (c.var1 < var1)
return false;
if (c.var2 < var2)
return false;
if (c.var3 < var3)
return false;
if (c.var4 < var4)
return false;
if ((!c.var5) & var5)
return false;
if ((!c.var6) & var6)
return false;
if ((!c.var7) & var7)
return false;
if ((!c.var8) & var8)
return false;
if ((!c.var9) & var9)
return false;
return true;
これらのifステートメントを書くためのより良い方法はありますか、それとも効率を改善するために他の場所を探す必要がありますか?
編集:プログラムは、進化科学を使用して、特定の結果へのパスを開発します。具体的には、StarcraftIIの注文を作成します。このメソッドは、特定の進化が特定の結果の条件を満たすかどうかを確認します。