【发布时间】:2010-03-23 19:44:32
【问题描述】:
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 个伪造的操作码来测试它。如果没有人做过。我会测试它并报告结果,如果它们可能有任何意义的话。
【问题讨论】:
-
别猜了。测量。
-
分析器电源。但是,我会考虑将我的运算符存储在由“op”索引的方法数组中
-
enum 似乎是一个更好的选择,通过一组预定义的操作更具可读性和可维护性。
标签: java oop switch-statement