Sto lavorando su un'applicazione e un approccio progettuale prevede un uso estremamente pesante instanceof
dell'operatore. Mentre so che il design OO generalmente cerca di evitare l'uso instanceof
, questa è una storia diversa e questa domanda è puramente correlata alle prestazioni. Mi chiedevo se ci fosse qualche impatto sulle prestazioni? È veloce come ==
?
Ad esempio, ho una classe base con 10 sottoclassi. In una singola funzione che accetta la classe base, controllo se la classe è un'istanza della sottoclasse ed eseguo alcune routine.
Uno degli altri modi in cui ho pensato di risolverlo è stato invece quello di utilizzare una primitiva intera "id di tipo" e utilizzare una maschera di bit per rappresentare le categorie delle sottoclassi, quindi fare semplicemente un confronto maschera di bit delle sottoclassi "tipo id" a un maschera costante che rappresenta la categoria.
La instanceof
JVM è in qualche modo ottimizzata per essere più veloce di così? Voglio attenermi a Java, ma le prestazioni dell'app sono fondamentali. Sarebbe bello se qualcuno che è stato su questa strada prima potesse offrire qualche consiglio. Sto pignolando troppo o mi sto concentrando sulla cosa sbagliata da ottimizzare?