Estou trabalhando em um aplicativo e uma abordagem de design envolve o uso extremamente pesado do instanceof
operador. 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 instanceof
alguma 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?