java优化挑剔:在投射之前,投射一些东西并让它抛出异常是否比调用 instanceof 来检查更快?
在任何人说什么之前,我只是出于好奇而问这个问题。我不打算根据这个答案做任何过早的优化。
我的问题是关于使用反射和投射的速度。标准的说法是“反思很慢”。我的问题是,究竟哪个部分很慢,为什么;特别是在比较某物是另一个实例的父实例时。
我非常有信心,只是将一个对象的类与另一个类对象进行比较与任何比较一样快,大概只是对已经存储在对象状态中的单例对象进行直接比较;但是,如果一个类是另一个类的父类呢?
我通常认为它和常规的课堂检查一样快,但今天我想到了这一点,似乎必须在“幕后”进行一些反思才能工作。我在网上检查了一下,发现有几个地方有人说很慢;大概是由于需要反射来比较一个对象的父级?instanceof
instanceof
instanceof
这就引出了下一个问题,那么仅仅铸造呢?如果我将某些东西作为对象,则不是我得到一个.但是,如果将对象投射到自身的父对象,则不会发生这种情况。从本质上讲,我正在做一个调用,或者逻辑,当我在运行时进行强制转换时,我不是吗?我以前从未听说过有人暗示投射物体可能会很慢。诚然,并非所有强制转换都属于所提供对象的父级,但许多强制转换都属于父类。然而,从来没有人暗示过这可能很慢。ClassCastException
instanceof
所以这是它。真的不是那么慢吗?两者都和投射到父类有点慢吗?还是有某种原因可以比电话更快地完成演员?instanceof
instanceof
instanceof