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

对一个对象多次调用一个方法,而不是多次构造一个对象

  •  0
  • Amichai  · 技术社区  · 16 年前

    我有一个名为myData的列表,我想对列表中的每个元素应用一个特定的方法(someFunction)。通过对象的构造函数调用方法是否比为一个特定对象实例化多次调用同一方法慢?

    换句话说,这是:

    for(int i = 0; i < myData.Count; i++)
        myClass someObject = new myClass(myData[i]);
    

    慢于此:

    myClass someObject = new myClass();
    for(int i = 0; i < myData.Count; i++)
        someObject.someFunction(myData[i]);
    

    ?

    3 回复  |  直到 16 年前
        1
  •  1
  •   Franci Penov    16 年前

    前一种方法可能会显著增加流程工作集。它还可能给Windows带来内存压力,导致其他应用程序被调出磁盘。

    而且,它会给CLR垃圾收集器带来很大的压力,因为您创建的每个新对象都会被跟踪以进行收集。

    速度会慢多少取决于你创建的对象的大小和数量。

        2
  •  1
  •   Fraga    16 年前

        3
  •  0
  •   btreat    16 年前

    从性能的角度来看,第二个代码块很可能更快,因为它没有对象实例化和垃圾收集的额外开销。

    推荐文章