1

IF-ELSE ステートメントに 100 の異なる条件があるとします。

if((boolean = methodA)){
    ...
}
else((boolean = methodZ)){
    ...
}

論理的には、可能性が最も低い条件は最後の条件 (methodZ の条件) に移動し、最も頻繁な条件は最初の条件 (methodA) に移動する必要があると思います。

次に、「methodA の計算に時間がかかったらどうしよう」と考えました。methodZ は、頻度が最も低い場合でも、到達するよりも時間がかかります。計算時間で条件を並べ替える必要がありますか? それとも頻度だけで並べますか?

このジレンマを解決するための良いアプローチは何でしょうか?

4

2 に答える 2

4

IF-ELSE ステートメントに 100 の異なる条件があるとします。

実際のアプリケーションでそれを行った場合、条件を評価する時間を測定するよりも解決することが重要な大きな設計上の問題があります。

計算時間で条件を並べ替える必要がありますか? それとも頻度だけで並べますか?

これには正確な答えはありません。最初に行うことは、条件を記述してから、アプリケーションでプロファイラーを使用して、条件の一部が実際にコードの問題であるかどうかを評価することです。これらのいずれかで CPU 使用率が高いことがわかった場合は、特定の分析を開始してそれを強化します。

于 2013-09-12T07:14:37.180 に答える
2

バランスを取る必要があります。計算される時間は、メソッドだけでなく、トランザクション全体です。methodZ が methodA の 1/100 の時間で終了し、methodZ の頻度が methodA の 100 分の 1 未満である場合は、先頭に移動する必要があります。

于 2013-09-12T07:19:20.927 に答える