哪个更快:克隆还是使用Streams?

时间:2010-06-02 14:52:15

标签: java performance stream cloning

在Java中,速度更快:

  • 克隆一个Object,然后将其传递给多个侦听器,假设克隆对象不包含比嵌套数组,原语和字符串更复杂的内容
  • 使用Streams将数据从一个对象传递到另一个对象?

2 个答案:

答案 0 :(得分:1)

克隆会更快,假设clone()的实现是合理的。

如果您考虑这一点,这是因为clone()是一个高度专业化的函数,只做一件事:创建对象的副本。因此,担心没有太多开销 - 通常它只是通过字段复制到新的对象实例。

但是让你的对象不可变并且再也不用担心克隆实例会更快: - )

答案 1 :(得分:1)

我猜克隆速度更快,因为:

当你克隆时,你通过实例化它和它的属性来创建另一个对象。 使用流时,序列化对象并反序列化(而Java也必须创建对象的实例)。因此,当您使用流时,您会有序列化对象的开销。

当然,clone()的实现不应该做一些不寻常的事情,这会增加复制对象的时间。要使用数组克隆对象,原语和字符串不应该消耗这么多时间。