Estoy trabajando en una aplicación de marco compacto y necesito aumentar el rendimiento. La aplicación actualmente funciona sin conexión serializando objetos a XML y almacenándolos en una base de datos. Usando una herramienta de creación de perfiles pude ver que esto era bastante grande, ralentizando la aplicación. Pensé que si cambiaba a una serialización binaria, el rendimiento aumentaría, pero como esto no es compatible con el marco compacto, miré a protobuf-net. La serialización parece más rápida, pero la deserialización es mucho más lenta y la aplicación está haciendo más deserialización que la serialización.XML frente a rendimiento binario para serialización/deserialización
¿La serialización binaria debería ser más rápida y, de ser así, qué puedo hacer para acelerar el rendimiento? He aquí un fragmento de lo que estoy usando XML y binario:
serialización XML: serialización binaria
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-net:
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;
}
Iba a sugerir usar el analizador de ANTS Red-Gate pero no funciona con el marco compacto (busque en google "red-gate hormigas perfilador compacto") – Kane