Я работаю над приложением, и один из подходов к проектированию предполагает чрезвычайно интенсивное использование оператора instanceof
. Хотя я знаю, что дизайн ОО обычно старается избегать использования instanceof
, это другая история, и этот вопрос связан исключительно с производительностью. Мне было интересно, есть ли какое-либо влияние на производительность? Это так же быстро, как ==
?
Например, у меня есть базовый класс с 10 подклассами. В единственной функции, которая принимает базовый класс, я проверяю, является ли класс экземпляром подкласса, и выполняю некоторую процедуру.
Один из других способов решения этой проблемы - использовать вместо этого целочисленный примитив «id типа» и использовать битовую маску для представления категорий подклассов, а затем просто выполнить сравнение битовой маски для подкласса «id типа "постоянной маске, представляющей категорию.
instanceof
каким-то образом оптимизируется JVM, чтобы быть быстрее, чем это? Я хочу придерживаться Java, но производительность приложения имеет решающее значение. Было бы здорово, если бы кто-то, кто был на этом пути раньше, мог бы дать совет. Не слишком ли я придираюсь к чему-то или сосредотачиваюсь не на том, что нужно оптимизировать?