Я работаю над компактным рамочным приложением и должен повысить производительность. Приложение в настоящее время работает в автономном режиме, сериализуя объекты в XML и сохраняя их в базе данных. Используя инструмент профилирования, я видел, что это было довольно накладные расходы, замедляя приложение. Я подумал, что если бы я переключился на двоичную сериализацию, производительность увеличилась бы, но поскольку это не поддерживается в компактной структуре, я смотрел на protobuf-net. Сериализация кажется более быстрой, но десериализация намного медленнее, и приложение делает больше десериализации, чем сериализация.XML vs Двоичная производительность для сериализации/десериализации
Должна ли бинарная сериализация быть быстрее, и если да, то что я могу сделать, чтобы ускорить работу? Вот отрывок о том, как я использую как XML и двоичную:
XML сериализации:
public string Serialize(T obj)
{
UTF8Encoding encoding = new UTF8Encoding();
XmlSerializer serializer = new XmlSerializer(typeof(T));
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
serializer.Serialize(stream, obj);
stream = (MemoryStream)writer.BaseStream;
return encoding.GetString(stream.ToArray(), 0, Convert.ToInt32(stream.Length));
}
public T Deserialize(string xml)
{
UTF8Encoding encoding = new UTF8Encoding();
XmlSerializer serializer = new XmlSerializer(typeof(T));
MemoryStream stream = new MemoryStream(encoding.GetBytes(xml));
return (T)serializer.Deserialize(stream);
}
Protobuf внутрисетевые Binary сериализации:
public byte[] Serialize(T obj)
{
byte[] raw;
using (MemoryStream memoryStream = new MemoryStream())
{
Serializer.Serialize(memoryStream, obj);
raw = memoryStream.ToArray();
}
return raw;
}
public T Deserialize(byte[] serializedType)
{
T obj;
using (MemoryStream memoryStream = new MemoryStream(serializedType))
{
obj = Serializer.Deserialize<T>(memoryStream);
}
return obj;
}
Я собирался предложить использовать профилировщик ANTS Red-Gate, но он не работает с каркасом Compact (поиск в google «red-gate ants profiler compact») – Kane