Pracuję nad aplikacją, a jedno podejście projektowe wymaga bardzo intensywnego użycia instanceof
operatora. Chociaż wiem, że projektowanie OO ogólnie stara się unikać używania instanceof
, to inna historia i to pytanie jest wyłącznie związane z wydajnością. Zastanawiałem się, czy ma to wpływ na wydajność? Czy to jest tak szybkie jak ==
?
Na przykład mam klasę podstawową z 10 podklasami. W jednej funkcji, która pobiera klasę podstawową, sprawdzam, czy klasa jest instancją podklasy i wykonuję jakąś procedurę.
Jednym z innych sposobów, w jaki myślałem o jego rozwiązaniu, było użycie prymitywu liczb całkowitych typu „id” zamiast tego i użycie maski bitowej do reprezentowania kategorii podklas, a następnie po prostu porównanie maski podklasy „identyfikator typu” z stała maska reprezentująca kategorię.
Czy instanceof
JVM jest w jakiś sposób zoptymalizowany, aby był szybszy? Chcę trzymać się Javy, ale wydajność aplikacji ma kluczowe znaczenie. Byłoby fajnie, gdyby ktoś, kto był na tej drodze wcześniej, mógł udzielić porady. Czy za dużo robię, czy koncentruję się na niewłaściwej optymalizacji?