Выполнение спецификации объекта

Насколько дорого стоит объект Typecasting с точки зрения производительности?
Должен ли я стараться избегать Typecasting, когда это возможно?

Ответ 1

Это достаточно дешево, что он попадает в категорию преждевременной оптимизации. Не теряйте время, даже размышляя или задавая вопросы об этом, если вы не профилировали свое приложение и не определили, что это проблема, а самое главное: не компрометируйте свой дизайн, чтобы избежать его.

Ответ 2

В зависимости от того, что вы подразумеваете под типизированием. Существует "повышение", которое вам ничего не стоит, и есть "понижение", которое вам очень дорого стоит. Ответ на второй также начинается с "это зависит". Обычно я избегаю понижения в моем коде, потому что, с моей экспроприации, если это чрезмерно используется в вашем коде, это означает, что дизайн плохой. Что, с другой стороны, не обязательно должно означать, что его вообще нельзя использовать.

Ответ 3

JavaWorld: стоимость кастинга

Литье используется для преобразования между типы - между ссылочными типами в в частности, для типа литья операции, в которой мы заинтересованы Вот.

Операции Upcast (также называемые расширение конверсий в Java Language Specification) конвертировать ссылка подкласса на предка класс ссылки. Это литье операция обычно автоматическая, поскольку он всегда безопасен и может быть реализованный непосредственно компилятором.

Операции Downcast (также называемые сужение конверсий в Java Language Specification) конвертировать ссылка класса предка на подкласс Справка. Эта операция литья создает накладные расходы, поскольку Java требует, чтобы бросок был проверен на чтобы убедиться, что он действителен. Если ссылочный объект не является экземпляр либо целевого типа для литой или подклассом этого типа, попытка броска не разрешена и должен бросить java.lang.ClassCastException.

Ответ 4

У Typecasting будет стоимость, потому что информация о времени выполнения должна быть проверена, чтобы гарантировать, что кастинг будет работать. По сравнению со всем остальным, я сомневаюсь, что это будет значительным, но вы можете попробовать и измерить его.

В более общем смысле, приведение типов (IMHO) означает, что что-то не так в дизайне. Конечно, иногда вы не можете избежать этого (например, работая с устаревшими коллекциями), но я определенно посмотрю, смогу ли я удалить его.

Ответ 5

Нет, это не должно влиять на производительность, достаточно значительную, чтобы иметь значение.