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