|
|
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#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:49:37 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 00:54:54 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
Ясненько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 01:07:26 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#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, 04:58:03 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
Плагин FindBug рекомендует использовать кеши (или пулы) готовых Integer объектов. Они покрывают не весь диапазон но ЕМНИП для -128 до 127 кешируются Byte, Short, Integer только нужно использовать соотв. не конструктор а статический метод возврата объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 13:26:03 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
Плюс еще можно почитать про flyweight ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 13:32:53 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNInteger a = 0; Integer b = a; a++; //b = 1, a = 1 - расход в семантике, такие дела... Это понятно, просто не сразу понял, почему запретили менять содержимое объекту класса-оболочки, а создают новый объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 14:26:41 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
Паша01ZyK_BotaNInteger a = 0; Integer b = a; a++; //b = 1, a = 1 - расход в семантике, такие дела... Это понятно, просто не сразу понял, почему запретили менять содержимое объекту класса-оболочки, а создают новый объект.Сначала нужно понять, зачем ввели классы оболочки? А поведение оставили таким же, что-бы можно было не задумываясь переписать алгоритм. Т.е. несли алгоритм выдает разный результат, при замене инта на Интеджер - то это не дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 14:47:20 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
Паша01, вот в хаскеле - все объекты иммутабельны, и ниче - производительность, обычно, повыше чем у джавы. правда там принципиально другой рантайм, рассчитанный на очень частую реаллокацию маленьких объектов. Но я правда думаю, что хаскель реализованный по верх jvm - будет ацки тормозить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 14:50:37 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNСначала нужно понять, зачем ввели классы оболочки? Что-то я полазил в интернете и так не нашел внятного ответа. Как я понял, виртуальная машина явы спроектированна под работу с объектами. А добавить туда возможность делать вот так Код: java 1. обошлось бы в громоздкие изменения в этой виртуальной машине явы и ,возможно, в ещё какие-то проблемы. Поэтому разработчики решили оставить все как есть, прикрыв этот недочет классами-оболочками в ущерб производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 21:01:32 |
|
||
|
Вопрос про ненужную трату ресурсов
|
|||
|---|---|---|---|
|
#18+
Паша01ZyK_BotaNСначала нужно понять, зачем ввели классы оболочки? Что-то я полазил в интернете и так не нашел внятного ответа. Как я понял, виртуальная машина явы спроектированна под работу с объектами. А добавить туда возможность делать вот так Код: java 1. обошлось бы в громоздкие изменения в этой виртуальной машине явы и ,возможно, в ещё какие-то проблемы. Поэтому разработчики решили оставить все как есть, прикрыв этот недочет классами-оболочками в ущерб производительности.все правильно. т.е. мы с водной стороны хотим хранить примитивы в дженериках, а с другой стороны - оставить старую семантику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 21:26:40 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2129770]: |
0ms |
get settings: |
12ms |
get forum list: |
22ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
58ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 352ms |
| total: | 543ms |

| 0 / 0 |
