Estou trabalhando em um aplicativo e uma abordagem de design envolve o uso extremamente pesado do instanceofoperador. Embora eu saiba que o design de OO geralmente tenta evitar o uso instanceof, essa é uma história diferente e esta questão está puramente relacionada ao desempenho. Eu queria saber se há algum impacto no desempenho? É tão rápido quanto ==?
Por exemplo, eu tenho uma classe base com 10 subclasses. Em uma única função que recebe a classe base, verifico se a classe é uma instância da subclasse e realizo alguma rotina.
Uma das outras maneiras pelas quais pensei em resolvê-lo foi usar uma primitiva inteira "id do tipo" e usar uma máscara de bits para representar categorias das subclasses e, em seguida, fazer uma comparação de máscara de bits das subclasses "tipo id" para um máscara constante que representa a categoria.
De instanceofalguma forma, a JVM é otimizada para ser mais rápida que isso? Eu quero me ater ao Java, mas o desempenho do aplicativo é crítico. Seria legal se alguém que já passou por esse caminho antes pudesse oferecer alguns conselhos. Estou falando demais ou focando na coisa errada para otimizar?