Пространственно-временная оценка Xmlparsing - PullRequest
0 голосов
/ 20 апреля 2011

Мне нужно разработать функцию, которая будет принимать строку (строку XML) в качестве входных данных и возвращать проанализированный результат (в формате объекта).

Я новичок в C # .Net, поэтому из сети я узнаю, что есть несколько способов сделать это:

  1. Сериализация Xml
  2. Xml TextReader
  3. XmlDocument
  4. XDocument (и т. Д.)

Я хотел знать, какой путь лучше (с точки зрения времени и пространства), учитывая, что каждую секунду эта функция должна анализировать и в среднем 10-20 строк (в среднем 1000-2000 символов).

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

XmlTextReader просматривает файл строка за строкой, поэтому он может обрабатывать очень большие файлы и очень полезен, когда вам не нужно анализировать весь xml.

XmlDocument создает DOM при загрузке файла, который очень легко просматривать, хотя он очень трудоемкий для больших XML-файлов.

1 голос
/ 20 апреля 2011

Для объема данных, который вы планируете обработать, практически не имеет значения, что вы используете.Напишите код, который работает / выглядит хорошо и чем измеряет - если ваше состояние ~ 40K в секунду является разумным, вы вряд ли найдете измеримую разницу между всеми подходами.

XmlSerialization является самым простым в использовании и требует наименьшего количества кодаесли вы можете выбрать формат вашего XML.XmlDocument и XDocument - это концепции более высокого уровня в верхнем XmlReader, поэтому, если вы ищете самую высокую скорость, необработанный XmlReader предоставит вам большинство вариантов.

0 голосов
/ 20 апреля 2011

Просто используйте MSXML. Профилируйте и измерьте производительность, затем решите, нужно ли вам альтернативное решение.

using MSXML;
DOMDocument30 doc = new DOMDocument30();
doc.async = false;
if (doc.load("somefile.xml"))
{
  // process document here
}

Если у вас есть конкретные измерения, вы можете начать просматривать информацию, например, в этой статье MSDN Но вы можете вообще не найти в этом необходимости.

...