Ich arbeite an einer Anwendung, und ein Design-Ansatz beinhaltet eine extrem starke Nutzung der instanceof
Betreiber. Ich weiß zwar, dass OO-Design im Allgemeinen versucht, die Verwendung von instanceof
Das ist eine andere Geschichte, und diese Frage bezieht sich ausschließlich auf die Leistung. Ich habe mich gefragt, ob es irgendwelche Auswirkungen auf die Leistung gibt? Ist es genauso schnell wie ==
?
Ich habe zum Beispiel eine Basisklasse mit 10 Unterklassen. In einer einzigen Funktion, die die Basisklasse nimmt, prüfe ich, ob die Klasse eine Instanz der Unterklasse ist und führe eine Routine aus.
Eine der anderen Möglichkeiten, die ich mir überlegt habe, war, stattdessen ein Integer-Primitivum "type id" zu verwenden, und eine Bitmaske zu benutzen, um die Kategorien der Unterklassen darzustellen, und dann einfach einen Bitmaskenvergleich der "type id" der Unterklassen mit einer konstanten Maske durchzuführen, die die Kategorie darstellt.
Ist instanceof
von der JVM irgendwie so optimiert, dass sie schneller ist als das? Ich möchte bei Java bleiben, aber die Leistung der Anwendung ist entscheidend. Es wäre toll, wenn jemand, der diesen Weg schon einmal gegangen ist, einen Ratschlag geben könnte. Bin ich zu pingelig oder konzentriere ich mich auf das Falsche, um es zu optimieren?