背景:这是基于一个在我回答之前被问到然后删除的问题——但我认为这是一个很好的问题,所以我整理了它,改写了它,并重新发布了它。
在使用 protobuf-net 的高吞吐量场景中,大量分配是一个问题(特别是对于 GC),是否可以重用对象?例如通过添加Clear()
方法?
[ProtoContract]
public class MyDTO
{
[ProtoMember(1)]
public int Foo { get; set; }
[ProtoMember(2)]
public string Bar { get; set; }
[ProtoMember(3, DataFormat = DataFormat.Group)]
public List<int> Values { get { return values; } }
private readonly List<int> values = new List<int>();
public void Clear()
{
values.Clear();
Foo = 0;
Bar = null;
}
}