instanceof运算符是否会产生很多开销? 为什么?

这个问题在这里已经有了答案:

  • 在Java 23中使用instanceof的性能影响应答

  • 它确实会产生一些开销,并与后续的投射相结合。 随着最近版本的Java的开销下降。 但无论如何,这是微型优化 - 即你在一般情况下不应该担心它。

    反对instanceof的真实观点是,在许多情况下,有更好的面向对象方法来实现所需的行为。


    如果编译器可以证明实例,它可能会或可能不会产生任何开销。 即使编译器不能立即证明目标,开销也很小。 几个CPU时钟(特别是如果instanceof跳转正确预测)。

    在instanceof之后进行投射通常是免费的。

    (注:编译器的意思是JIT之一)


    没有严重的开销。 它几乎肯定比本土的getType()式解决方案便宜。 铸造虽然不是免费的,但也很便宜。

    正如Bozho指出的那样,它可能表明设计存在缺陷,但在某些情况下,它是最实用的选择,因此不应忽视它的失控。

    链接地址: http://www.djcxy.com/p/76373.html

    上一篇: Does instanceof operator generate a lot of overhead ? Why?

    下一篇: Performance test independent of the number of iterations