2015-02-24 3 views
4

В Effective Java Item 5: Avoid creating unnecessary objectsКалендарь Инстансы особенно дорого для создания

Joshua Bloch Вот сказал Calendar instances are particularly expensive to create., но не было никаких оснований упоминается там.

Мой вопрос: Почему это дороже, чем создание экземпляров других классов?

+1

В этой же книге есть сайт именно с этим вопросом - сайт объясняет в деталях, почему это дорого: http://cephas.net/blog/2006/02/25/the-cost-of-calendar -объект-создание/ – ThePerson

+0

Моя рекомендация - посмотреть исходный код. В приложении Calendar.getInstance() есть много вещей, которые смутно усложняются. Эффективнее использовать длинный, если это возможно. – Necreaux

+0

@Necreaux 'Эффективно использовать длинный, если это возможно. ? 'Что именно это означает –

ответ

0

Вы действительно ответили на свой вопрос в комментариях. Если вы не хотите работать со всей сложностью Календаря, вычисляйте праздники, дни недели, часовые пояса и т. Д., Тогда простое долго будет служить вашему. Календарь занимает много памяти (вместо 8 байтов), потому что он должен обслуживать все эти преобразования, преобразования, сравнения, снисхождения, манипуляции с полями и другие функции на основе локалей. У этого есть много полей, смотрящих с ERA, DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH и т. Д. Все они используются в некоторых действиях, поэтому производительность класса намного хуже, чем простое длинное сравнение.

Конечно, вы не можете сравниться с другими классами. Каждый класс удовлетворяет свои потребности и может быть намного сложнее и дороже, чем календарь.