for ループ内にネストされた if ステートメントで構成されるメソッドがあります。
for (int i = 0; i < val; i=i+2)
{
for (int j = i+1; j < val; j=j+1)
{
actualDistance = actualDistance + (ulong)Math.Max(revenue[i], revenue[j]) * (ulong)Math.Abs(point[j] - point[i]);
if (j + 1 < val)
{
actualDistance = actualDistance + (ulong)Math.Max(revenue[i+1], revenue[j+1]) * (ulong)Math.Abs(point[j+1] - point[i+1]);
}
}
}
ただし、val が数千万以内の数値を表す場合、このメソッドは for ループと if ループの両方で使用されるため、実行時に非常に長い時間がかかります。
これを行うためのより良い、より効率的な方法はありますか? 現在のコードは時間効率が悪いです。