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