Какой самый эффективный способ глубокого копирования объекта в Ruby?

Я знаю, что сериализация объекта - это (насколько мне известно) единственный способ эффективного глубокого копирования объекта (пока он не сохраняет состояние, как IO и тому подобное), но является одним из способов особенно более эффективен, чем другой?

Например, поскольку я использую Rails, я всегда могу использовать ActiveSupport :: JSON , to_xml - и из того, что я могу сказать при маршалинге объект - один из наиболее распространенных способов сделать это. Я ожидал, что маршаллинг, вероятно, самый эффективный из них, так как он является внутренним Ruby, но я что-то упускаю?

Изменить : обратите внимание, что его реализация - это то, что я уже рассмотрел - я не хочу заменить существующие методы поверхностного копирования (например, dup и clone ), поэтому я, скорее всего, добавлю Object :: deep_copy , в результате чего любой из вышеперечисленных методов (или любые ваши предложения :) имеет наименьшие накладные расходы.

10
задан mway 14 April 2011 в 01:05
поделиться