代码之家  ›  专栏  ›  技术社区  ›  Anirvan

在Perl中对数据结构进行深度复制的最佳方法是什么?

  •  36
  • Anirvan  · 技术社区  · 15 年前

    给定一个数据结构(例如散列散列),什么是干净的/推荐的方法来制作一个深度拷贝以便立即使用?假设合理的情况下,数据不是特别大,没有复杂的周期,可读性/可维护性等比速度更重要。

    我知道我可以用 Storable , Clone 克隆:更多, Clone::Fast , Data::Dumper 等等。目前的最佳实践是什么?

    4 回复  |  直到 5 年前
        1
  •  18
  •   Tejus Prasad    9 年前

    Clone Storable::dclone 但后者支持更多的数据类型。

    Clone::Fast Clone::More 如果内存对我有好处的话,它们几乎是等价的,但功能的完整性比克隆还要差,而且 Scalar::Util::Clone 支持甚至更少,但IIRC是其中最快的一些结构。

    在可读性方面,这些都应该工作相同,它们实际上是可互换的。

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

    我不会用 Data::Dumper 因为它太笨重和迂回了。可能也会很慢。

    值得一提的是,如果你想定制克隆,那么 Data::Visitor 提供挂钩功能和相当功能完整的深度克隆是默认行为。

        2
  •  15
  •   chaos    10 年前

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

        3
  •  7
  •   Dan Aditi    15 年前

    Clone 可能是你想要的。至少,我看到的所有代码都是这样使用的。

        4
  •  -1
  •   Ivan Baidakou    5 年前

    尝试使用 fclone Panda::Lib 哪个似乎是最快的(用xs写的)