Я следующие методы расширения для клонирования список с элементами:BinaryFormatter становится медленнее, чем XmlSerializer больше деталей я сериализации/десериализации
public static class MyExtensionMethods
{
public static T CloneXml<T>(this T source)
{
var stream = new MemoryStream();
var xmls = new XmlSerializer(typeof(T));
xmls.Serialize(stream, source);
stream.Seek(0, SeekOrigin.Begin);
return (T)xmls.Deserialize(stream);
}
public static T CloneBinary<T>(this T source)
{
var formatter = new BinaryFormatter();
var stream = new MemoryStream();
formatter.Serialize(stream, source);
stream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(stream);
}
}
Для теста я использую следующий объект:
[Serializable]
public class MyItem
{
public string Name { get; set; }
}
Теперь, когда я клонирую список из 100 объектов MyItem, решение BinaryFormatter (1 мс) будет намного быстрее, чем мое решение XmlSerializer (110 мс). Но если у меня есть 100000 объектов MyItem в списке, решение BinaryFormatter (1s) будет медленнее, чем решение XmlSerializer (450 мс).
Что здесь происходит?
Это делает общий смысл для меня. Благодарю. –