データ構造 (ハッシュのハッシュなど) が与えられた場合、すぐに使用できるようにディープ コピーを作成するためのクリーンで推奨される方法は何ですか? データが特に大きくなく、複雑なサイクルが存在せず、可読性/保守性などの合理的なケースを想定します。何としても速度よりも重要です。
Storable、Clone、 Clone::More、Clone::Fast、Data:: Dumper などを使用できることはわかっています。現在のベスト プラクティスは何ですか?
Clone
は よりもはるかに高速ですStorable::dclone
が、後者はより多くのデータ型をサポートしています。
Clone::Fast
メモリが正しく機能する場合はほぼ同等ですが、Clone::More
クローンよりも完全な機能は少なく、Scalar::Util::Clone
サポートはさらに少なくなりますが、一部の構造ではIIRCが最も高速です。
読みやすさに関しては、これらはすべて同じように機能するはずであり、実質的に交換可能です。
特定のパフォーマンスが必要ない場合は、Storable の dclone を使用します。
Data::Dumper
面倒で回りくどいので、私はこれを使用しません。それもおそらく非常に遅くなるでしょう。
価値があるのは、カスタマイズ可能なクローン作成が必要な場合Data::Visitor
は、フック機能を提供し、完全な機能を備えた完全なディープ クローン作成がデフォルトの動作であることです。
私の印象は、それStorable::dclone()
はやや正統的だということです。
クローンはおそらくあなたがそのために欲しいものです。少なくとも、それは私が見たすべてのコードが使用しているものです。