国土局网站建设情况,深圳南山网的工作,中心网站设计,排名好的青岛网站建设问题#xff1a;在Java里面使用instanceof的性能影响
我正在写一个应用程序#xff0c;其中一种设计方案包含了instanceof操作的大量使用。虽然我知道面向对象设计通常试图避免使用instanceof#xff0c;但那是另一回事了#xff0c;这个问题纯粹只是讨论与性能有关。我想…问题在Java里面使用instanceof的性能影响
我正在写一个应用程序其中一种设计方案包含了instanceof操作的大量使用。虽然我知道面向对象设计通常试图避免使用instanceof但那是另一回事了这个问题纯粹只是讨论与性能有关。我想知道这是否会对性能产生任何影响?它和 一样快速吗?
例如我有一个有10个子类的父类。在接受父类作为参数的单个函数中我检查这个类是否是子类的实例并执行一些程序。
我想到的解决它的另一种方法是使用一个“type id”原始整型代替并使用掩码表示子类的类别然后只让子类“type id”和一个常量掩码做一次掩码的比较比较的结果就用来表示类别。
instanceof是否被JVM优化到比这更快?我想坚持使用Java但是这个应用程序的性能是至关重要。如果以前有过类似经历的人能提供一些建议那就太棒啦。我是不是太挑剔了或者说把注意力放在优化错误的东西上面了?
回答
现代的JVM/JIT编译器已经消除了大多数传统的“慢”操作包括实例化、异常处理、反射等。产生的性能影响。
正如Donald Knuth所写“我们应该忘记小的效率问题可以说大约97%的情况下:过早的优化是万恶之源。”instanceof的性能可能还没有成为一个问题所以不要浪费时间去想一些复杂的解决方案除非你确定这已经出现问题了。
文章翻译自Stack Overflowhttps://stackoverflow.com/questions/103564/the-performance-impact-of-using-instanceof-in-java