在Perl中制作数据结构的深层副本的最佳方法是什么?

时间:2008-12-23 04:38:33

标签: perl clone

给定一个数据结构(例如散列哈希),什么是干净/推荐的方法来制作一个深层副本以供立即使用?假设合理的情况,数据不是特别大,没有复杂的循环,可读性/可维护性等。不惜一切代价比速度更重要。

我知道我可以使用StorableClone,克隆::更多,Clone::FastData::Dumper等。目前的最佳做法是什么?

4 个答案:

答案 0 :(得分:18)

CloneStorable::dclone快得多,但后者支持更多数据类型。

Clone::FastClone::More非常相同,如果内存为我提供正确的功能,但功能完全甚至比克隆功能更少,Scalar::Util::Clone支持的功能更少,但IIRC是其中最快的一些结构。

关于可读性,这些都应该是相同的,它们实际上是可以互换的。

如果您没有特定的性能需求,我会使用Storable的dclone。

我不会仅仅因为它是如此繁琐和迂回而使用Data::Dumper。它可能会非常缓慢。

对于它的价值,如果您想要可自定义的克隆,那么Data::Visitor提供了挂钩功能,并且相当完整的功能完全深度克隆是默认行为。

答案 1 :(得分:15)

我的印象是Storable::dclone()有点规范。

答案 2 :(得分:7)

Clone可能就是你想要的。至少,这就是我见过的所有代码所用的内容。

答案 3 :(得分:-1)

尝试使用Panda::Lib中的fclone,这似乎是最快的(用XS编写)