Что быстрее: клонирование или использование потоков? - PullRequest
1 голос
/ 02 июня 2010

В Java, что быстрее:

  • Клонирование объекта, затем передача его нескольким слушателям, предполагая, что клонированный объект не содержит ничего более сложного, чем вложенные массивы, примитивы и строки.
  • Использование потоков для передачи данных от одного объекта к другому?

Ответы [ 2 ]

1 голос
/ 02 июня 2010

Я думаю, клонирование происходит быстрее, потому что:

Когда вы клонируете, вы создаете объект из другого, создавая его экземпляр и атрибуты. Когда вы используете потоки, вы сериализуете объект и десериализуете его (тогда как Java также должна создать экземпляр объекта). Поэтому, когда вы используете потоки, у вас возникают накладные расходы на сериализацию объектов.

Конечно, реализация clone () не должна делать что-то необычное, что увеличивает время на копирование объектов. Клонирование объекта с массивами, примитивами и строками не должно занимать так много времени.

1 голос
/ 02 июня 2010

Клонирование будет происходить быстрее, если предположить, что реализация clone () достаточно разумна.

Если вы думаете об этом, то это потому, что clone () - это узкоспециализированная функция, которая выполняет только одну вещь: создает копию объекта. Поэтому не нужно беспокоиться об этом - обычно все, что он делает, это копирование поля за полем в новый экземпляр объекта.

Но сделать ваши объекты неизменяемыми и больше не беспокоиться о клонировании экземпляров будет еще быстрее: -)

...