Является ли оператор 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);
}
И затем один класс на оператора.
EDIT:
Извините, я должен был быть более конкретным с точки зрения ответов.
Оператор полностью неизвестен, и я использую JDk 1.4. Нет выбора. Нет перечислений. Нет закрытий. :(
Оператор выбирается пользователем среди множества вариантов. Для простоты представьте список GUI с 1000 операциями, когда пользователь выбирает один, выбирается код операции оператора switch. Используя иерархию классов, пользователь выбирает класс.
Я задаю этот вопрос, потому что кто-то должен был проверить это раньше. Мне не хочется создавать 1000 классов и 1000 поддельных операционных кодов, чтобы проверить это. Если никто этого не сделал. Я протестирую его и сообщу о результатах, если они вообще могут иметь какое-либо значение.