Ниппик оптимизации Java: быстрее ли разыгрывать что-либо и позволить ему генерировать исключение, чем вызывать instanceof для проверки перед приведением?

Прежде чем кто-нибудь скажет, что яя спрашиваю это только из любопытства; Я'Я не планирую делать преждевременную оптимизацию на основе этого ответа.

Мой вопрос о скорости в использовании отражения и кастинга. Стандартное высказывание:медленное отражение, Мой вопрос в том, какая часть медленная и почему; особенно в сравнении, если что-то является родителем другого экземпляра.

Я вполне уверен, что простое сравнение класса объекта с другим объектом класса примерно так же быстро, как и любое сравнение, предположительно, просто прямое сравнение одноэлементных объектов, которые уже хранятся в объекте.с состояние; но что, если один класс является родителем другого?

Я обычно думаю оinstanceof так же быстро, как и обычная проверка класса, но сегодня я подумал об этом, и, похоже, что-то должно произойти »под сценой заinstanceof работать. Я проверил онлайн и нашел несколько мест, где кто-то сказалinstanceof медленный; предположительно из-за отражения, необходимого для сравнения родительского объекта?

Это приводит к следующему вопросу, а как насчет просто кастинга. Если я приведу что-то как объектне я получаюClassCastException, Но это неЭто может произойти, если объект приведен к самому родителю. По сути яя делаюinstanceof вызов или логика на этот счет, когда я выполняю приведение во время выполнения, не так ли? Я'Никогда не слышал, чтобы кто-то намекал на то, что кастование объекта может быть медленным. По общему признанию, не все приведения к родителю предоставленного объекта, но много приведенияявляются в родительские классы. Еще никто никогда не намекал на то, что это может быть медленно.

Итак, что это. Являетсяinstanceof действительно не так медленно? Обаinstanceof и приведение к родительскому классу довольно медленно? или есть какая-то причина, что приведение может быть сделано быстрее, чемinstanceof вызов?

Ответы на вопрос(5)

Ваш ответ на вопрос