using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections.Generic;
private const string filePath = "example.xml";
private static XmlSerializer xmlSerializer = new XmlSerializer(typeof(XmlData));
private static XmlData data = new XmlData();
public static void Main()
var stopwatch = new Stopwatch();
for(var i = 0; i < 35000; i++)
data.items.Add(new ItemDefinition());
Console.WriteLine("Serialzing into string ....");
var xml = SaveToXML(data);
Console.WriteLine($"Finished after {stopwatch.ElapsedMilliseconds} milliseconds");
Console.WriteLine("\n\nDeserialzing from string ....");
Console.WriteLine($"Finished loading {data.items.Count} items after {stopwatch.ElapsedMilliseconds} milliseconds");
Console.WriteLine("\n\nSerialzing into file ....");
Console.WriteLine($"Finished after {stopwatch.ElapsedMilliseconds} milliseconds");
Console.WriteLine("\n\nDeserialzing from file ....");
Console.WriteLine($"Finished loading {data.items.Count} items after {stopwatch.ElapsedMilliseconds} milliseconds");;
private static void SaveToFile(XmlData data)
using(var stream = File.Open(filePath, FileMode.OpenOrCreate, FileAccess.Write))
xmlSerializer.Serialize(stream, data);
private static XmlData LoadFromFile()
if(!File.Exists(filePath))
Console.WriteLine("ERROR: File not found!");
using(var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
var data = (XmlData) xmlSerializer.Deserialize(stream);
private static string SaveToXML(XmlData data)
using(var writer = new StringWriter())
xmlSerializer.Serialize(writer, data);
return writer.ToString();
private static XmlData LoadFromXML(string xml)
using(var reader = new StringReader(xml))
var data = (XmlData) xmlSerializer.Deserialize(reader);
public class ItemDefinition
public List<ItemDefinition> items = new List<ItemDefinition>();