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