Ang*_*ker 4 .net c# performance cloning .net-2.0
我正在尝试优化克隆对象的一段代码:
#region ICloneable
public object Clone()
{
MemoryStream buffer = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(buffer, this); // takes 3.2 seconds
buffer.Position = 0;
return formatter.Deserialize(buffer); // takes 2.1 seconds
}
#endregion
Run Code Online (Sandbox Code Playgroud)
很标准的东西.问题是该对象非常强大,需要5.4秒(根据ANTS Profiler - 我确信有探测器开销,但仍然).
是否有更好,更快的克隆方式?
不要实现ICloneable.
克隆对象的快速方法是创建相同类型的新实例,并将原始实例中的所有字段复制/克隆到新实例.不要试图提出可以克隆任何类的任何对象的"通用"克隆方法.
例:
class Person
{
private string firstname;
private string lastname;
private int age;
public Person(string firstname, string lastname, int age)
{
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
}
public Person Clone()
{
return new Person(this.firstname, this.lastname, this.age);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3473 次 |
| 最近记录: |