
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.03.2013, 00:49:37
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Здравствуйте. У меня вопрос про ненужную трату ресурсов. Вот пример: Код: java 1. 2. Операция a++ создает новый объект а с новым значением. Хотелось бы спросить, а это не слишком ли растратно. Вроде как создание объекта - это самая ресурсоёмкая операция. А поменять значение переменной примитивного типа int value внутри объекта а менее затратно. Сделал пример: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Результат: Код: java 1. 2. Разница в 12 раз!!! Почему так не происходит в яве на самом деле, объясните, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 00:54:54
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 01:07:26
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Ясненько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 04:58:03
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Паша01Здравствуйте. У меня вопрос про ненужную трату ресурсов. Вот пример: Код: java 1. 2. Операция a++ создает новый объект а с новым значением. Хотелось бы спросить, а это не слишком ли растратно. Вроде как создание объекта - это самая ресурсоёмкая операция. А поменять значение переменной примитивного типа int value внутри объекта а менее затратно. Сделал пример: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Результат: Код: java 1. 2. Разница в 12 раз!!! Почему так не происходит в яве на самом деле, объясните, пожалуйста.ссылочная прозрачность, все дела. т.е. скопировать объект гораздо расстратней, чем ссылку на него. а при этом хочеться той же семантики что и с простым инт. Пример. int a = 0; int b = a; a++; //b = 0, a = 1 Если бы Интегер был мутабельный Integer a = 0; Integer b = a; a++; //b = 1, a = 1 - расход в семантике, такие дела... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 13:26:03
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Плагин FindBug рекомендует использовать кеши (или пулы) готовых Integer объектов. Они покрывают не весь диапазон но ЕМНИП для -128 до 127 кешируются Byte, Short, Integer только нужно использовать соотв. не конструктор а статический метод возврата объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 13:32:53
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Плюс еще можно почитать про flyweight ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 14:26:41
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
ZyK_BotaNInteger a = 0; Integer b = a; a++; //b = 1, a = 1 - расход в семантике, такие дела... Это понятно, просто не сразу понял, почему запретили менять содержимое объекту класса-оболочки, а создают новый объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 14:47:20
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Паша01ZyK_BotaNInteger a = 0; Integer b = a; a++; //b = 1, a = 1 - расход в семантике, такие дела... Это понятно, просто не сразу понял, почему запретили менять содержимое объекту класса-оболочки, а создают новый объект.Сначала нужно понять, зачем ввели классы оболочки? А поведение оставили таким же, что-бы можно было не задумываясь переписать алгоритм. Т.е. несли алгоритм выдает разный результат, при замене инта на Интеджер - то это не дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 14:50:37
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Паша01, вот в хаскеле - все объекты иммутабельны, и ниче - производительность, обычно, повыше чем у джавы. правда там принципиально другой рантайм, рассчитанный на очень частую реаллокацию маленьких объектов. Но я правда думаю, что хаскель реализованный по верх jvm - будет ацки тормозить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 21:01:32
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
ZyK_BotaNСначала нужно понять, зачем ввели классы оболочки? Что-то я полазил в интернете и так не нашел внятного ответа. Как я понял, виртуальная машина явы спроектированна под работу с объектами. А добавить туда возможность делать вот так Код: java 1. обошлось бы в громоздкие изменения в этой виртуальной машине явы и ,возможно, в ещё какие-то проблемы. Поэтому разработчики решили оставить все как есть, прикрыв этот недочет классами-оболочками в ущерб производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2013, 21:26:40
|
|||
|---|---|---|---|
Вопрос про ненужную трату ресурсов |
|||
|
#18+
Паша01ZyK_BotaNСначала нужно понять, зачем ввели классы оболочки? Что-то я полазил в интернете и так не нашел внятного ответа. Как я понял, виртуальная машина явы спроектированна под работу с объектами. А добавить туда возможность делать вот так Код: java 1. обошлось бы в громоздкие изменения в этой виртуальной машине явы и ,возможно, в ещё какие-то проблемы. Поэтому разработчики решили оставить все как есть, прикрыв этот недочет классами-оболочками в ущерб производительности.все правильно. т.е. мы с водной стороны хотим хранить примитивы в дженериках, а с другой стороны - оставить старую семантику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2129770]: |
0ms |
get settings: |
14ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 323ms |
| total: | 485ms |

| 0 / 0 |
