给定一个数据结构(例如散列哈希),什么是干净/推荐的方法来制作一个深层副本以供立即使用?假设合理的情况,数据不是特别大,没有复杂的循环,可读性/可维护性等。不惜一切代价比速度更重要。
我知道我可以使用Storable,Clone,克隆::更多,Clone::Fast,Data::Dumper等。目前的最佳做法是什么?
答案 0 :(得分:18)
Clone
比Storable::dclone
快得多,但后者支持更多数据类型。
Clone::Fast
和Clone::More
非常相同,如果内存为我提供正确的功能,但功能完全甚至比克隆功能更少,Scalar::Util::Clone
支持的功能更少,但IIRC是其中最快的一些结构。
关于可读性,这些都应该是相同的,它们实际上是可以互换的。
如果您没有特定的性能需求,我会使用Storable的dclone。
我不会仅仅因为它是如此繁琐和迂回而使用Data::Dumper
。它可能会非常缓慢。
对于它的价值,如果您想要可自定义的克隆,那么Data::Visitor
提供了挂钩功能,并且相当完整的功能完全深度克隆是默认行为。
答案 1 :(得分:15)
我的印象是Storable::dclone()
有点规范。
答案 2 :(得分:7)
Clone可能就是你想要的。至少,这就是我见过的所有代码所用的内容。
答案 3 :(得分:-1)
尝试使用Panda::Lib中的fclone
,这似乎是最快的(用XS编写)