356 Stimmen

Die Auswirkungen der Verwendung von instanceof in Java auf die Leistung

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X