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