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