Есть ли способ повторно использовать XmlReader? - PullRequest
1 голос
/ 07 апреля 2010

У меня есть процесс, который использует XmlReader. Я уже многое сделал, чтобы выжать из него максимальную производительность. До сих пор мы получили огромный выигрыш от использования Reader, в отличие от XmlDoc или DataSet.GetXml (). Мы ожидаем получать XML много раз в секунду, и я бы хотел избежать лишних затрат на пересоздание читателя каждый раз. Я уже кэшировал XmlReaderSettings, но есть ли возможность повторно использовать XmlReader или мне нужно каждый раз воссоздавать его?

Ответы [ 2 ]

4 голосов
/ 07 апреля 2010

Возможно, можно использовать XmlReader, используя некоторые приемы, но вы не должны этого делать. Он предназначен только для одноразового использования, поэтому у него нет средств для перезапуска с использованием другого источника.

Попытка повторного использования, вероятно, будет более трудоемкой, чем создание нового читателя в любом случае. Создание ридера довольно дешево и вряд ли будет проблемой для производительности.

2 голосов
/ 07 апреля 2010

Это почти наверняка потерянное усилие. XML должен прийти откуда-то, файл на диске на сетевой карте. Операции ввода-вывода выполняются на несколько порядков медленнее, чем все, что вы делаете, чтобы создать экземпляр класса reader.

Типичная ловушка заключается в том, что вы запускаете тестовую программу для профилирования кода, используя одни и те же данные снова и снова. Это нереалистичный тест, вы получите XML из кэшированной копии, например, из кеша файловой системы. Это очень быстро, он работает на скорости шины. В производственной машине это не работает, данные почти наверняка еще не кэшированы. Это должно быть прочитано с диска, например. Это очень медленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...