Je travaille sur une application et une approche de conception implique une utilisation extrêmement intensive de l' instanceof
opérateur. Bien que je sache que la conception OO essaie généralement d'éviter d'utiliser instanceof
, c'est une autre histoire et cette question est purement liée aux performances. Je me demandais s'il y avait un impact sur les performances? Est-ce aussi rapide que ==
?
Par exemple, j'ai une classe de base avec 10 sous-classes. Dans une seule fonction qui prend la classe de base, je vérifie si la classe est une instance de la sous-classe et exécute une routine.
L'une des autres façons dont j'ai pensé à le résoudre était d'utiliser une primitive entière "type id" à la place, et d'utiliser un masque de bits pour représenter les catégories des sous-classes, puis de faire une comparaison de masque de bits des sous-classes "type id" avec un masque constant représentant la catégorie.
Est en instanceof
quelque sorte optimisé par la JVM pour être plus rapide que cela? Je veux m'en tenir à Java mais les performances de l'application sont essentielles. Ce serait cool si quelqu'un qui avait déjà suivi cette voie pouvait offrir des conseils. Suis-je trop fatigué ou me concentre-t-il sur la mauvaise chose à optimiser?