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 次,则应将其移到顶部。

于 2013-09-12T07:19:20.927 回答