1

所以我正在使用.NET 中的 Protobufs,并尝试将它们与缓冲池和 AsyncSocketEventArgs 池合并。缓冲池将大字节数组的部分分配给事件 args。

所以,问题是,我想不出一种方法让 Protobufs 直接序列化到我的一个缓冲区上。相反,所有方法似乎都序列化到自己的缓冲区上,这会浪费时间/内存......有什么方法可以做我正在寻找的事情吗?

编辑:我创建了一个原型方案,并生成了包含不完全序列化类的增量的消息,所以我相信使用属性/序列化器类对我没有帮助。我想将字节直接写入我的缓冲区之一。我相信 MemoryStream ,从我读过的内容来看,它仍然会指向一个创建的字节数组,这仍然会浪费大量的时间/内存。

4

1 回答 1

1

使用内存流

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;


namespace ConsoleApplication1
{
    class Program
    {

        static void Main(string[] args)
        {
            Person person = new Person();
            XmlSerializer serializer = new XmlSerializer(typeof(Person));
            MemoryStream stream = new MemoryStream();

            serializer.Serialize(stream, person); 
        }


    }
    public class Person
    {
    }

}
​
于 2015-06-14T01:33:01.903 回答