运营商解释的最快方式是switch语句来实现运营商解释在Java中是一个switch语句在Java中实现
public boolean accept(final int op, int x, int val) {
switch (op) {
case OP_EQUAL:
return x == val;
case OP_BIGGER:
return x > val;
case OP_SMALLER:
return x < val;
default:
return true;
}
}
在这个简单的例子,很明显是最快的方法。现在想象你有1000个操作员。它会比类层次更快吗?当类层次结构比switch语句更有效时,是否有阈值? (在内存中显然不是)
abstract class Op {
abstract public boolean accept(int x, int val);
}
然后每个运算符一个类。
编辑: 对不起,我应该从答案的外观更具体。 运营商是完全未知的,我使用JDK 1.4。没有选择。没有枚举。没有关闭。 ( )操作符由用户在众多选择中进行选择,为简单起见,设想一个包含1000个操作的GUI列表,当用户选择一个操作符时,选择switch语句的操作码,使用类层次结构,用户可以选择一个班级 我在问这个问题,因为有人必须先测试过它,我不想创建1000个班级和1000个虚假操作代码来测试它,如果没有人做到这一点,我会测试它并报告结果如果他们可以有任何意义。
不要猜测。测量。 – skaffman 2010-03-23 19:48:23
剖面仪功率。但是,我会考虑将我的操作符存储在由“op”索引的一组方法中。 – MonoThreaded 2010-03-23 19:57:21
枚举看起来像是一个更好的选择,通过预定义的一组操作更易于读取和维护。 – Robin 2010-03-23 20:36:46