Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 娱乐还是重新初始化?_Performance - Fatal编程技术网

Performance 娱乐还是重新初始化?

Performance 娱乐还是重新初始化?,performance,Performance,我经常遇到这样的情况:有一个循环,在循环的开头构造一个新对象并将其添加到集合中。例如,伪代码: iterating over a resultset do create an object set instance data in object to some resultset data put object in collection next 这种方法如何取而代之 create an object iterating over a resultset do set in

我经常遇到这样的情况:有一个循环,在循环的开头构造一个新对象并将其添加到集合中。例如,伪代码:

iterating over a resultset do
  create an object
  set instance data in object to some resultset data
  put object in collection
next
这种方法如何取而代之

create an object 
iterating over a resultset do
  set instance data in object to some resultset data
  put object in collection
next
这两种方法的优缺点是什么?哪个更快?有比这两个更好的方法吗


我不知道该贴什么标签。对不起。

您的最终伪代码应该更像:

create an object 
iterating over a resultset do
  set instance data in object to some resultset data
  **clone** object into collection
next

否则,最终的对象会有这么多副本,因为您一直在修改添加引用的同一个对象。因此,您不会真正节省任何对象空间或创建时间。第二种方法是完全有效的,如果出于某种原因,您不希望重新初始化每个循环,例如当您需要为每个必须初始化的循环更改较少的成员时。只需确保对象的复制构造函数是健壮的。

根据用于实现的语言,您将获得不同的结果。 某些语言返回对对象的引用。因此,第一个选项将执行您所期望的操作,因为将创建一个新对象,并将其附加到集合中,其中包含它自己的值

iterating over a resultset do
    create an object
    set instance data in object to some resultset data
    put object in collection
next
但是如果语言只是返回对对象的引用,而您尝试执行第二种方法

create an object (x)
iterate over resultset do
    set instance data in object (x) to resultset data (returns a reference to x with updated data)
    put object in collection (puts a reference to x in collection)
next
因此,在迭代resultset之后,您将得到一组对集合中相同对象的引用,这些值是上次分配给的值