Я действительно испытываю ОГРОМНУЮ потерю производительности при вызове простого XmlSerializer. Включая .cs в мой проект и используя его вместо XmlSerializer, код запускается БЫСТРО даже в 64-битных системах
Для дальнейшего объяснения последнего пункта, если у меня есть класс:
[Serializable]
class Bar
{
public Bar() { }
[XmlElement(ElementName = "Foo")]
public Foo Foo; // my class with 500 fields
}
Десериализация выполняется медленно только при передаче дочернего элемента Foo. Даже если я уже выполнил десериализацию:
StringReader sr = new StringReader(@"<Bar></Bar>");
XmlSerializer serializer = new XmlSerializer(typeof(Bar));
object o = serializer.Deserialize(sr); // FAST
StringReader sr = new StringReader(@"<Bar><Foo><Field1>foo</Field1></Foo></Bar>");
XmlSerializer serializer = new XmlSerializer(typeof(Bar));
object o = serializer.Deserialize(sr); // SLOW
EDIT Я забыл сказать, что я проанализировал выполнение с помощью Process Monitor, и я не вижу, чтобы какая-либо задача занимала много времени из моего приложения или из csc. exe или что-нибудь, связанное с Framework. Система просто выполняет другие функции (или мне что-то не хватает), например, антивирус, explorer.exe, индексация Windows Search (их уже пытались отключить)