Скорость обработки XML-файла
От: Udovitsky  
Дата: 16.06.05 13:38
Оценка:
В приложении на Visual C++ с MFC использую чтение/запись xml-файлов при помощи парсера MSXML. При значительном количестве записываемых данных скорость обработки файла очень мала
Список из 3000 элементов записывается/читается из файла приблизительно за 20 сек.

Подскажите, пожалуйста — что можно сделать?
Можно ли использовать другой парсер? Или вообще отказаться от использования xml в данном случае? Допустимое время — на порядок меньше.
Re: Скорость обработки XML-файла
От: achp  
Дата: 16.06.05 13:52
Оценка:
Здравствуйте, Udovitsky, Вы писали:

U>Подскажите, пожалуйста — что можно сделать?

U>Можно ли использовать другой парсер? Или вообще отказаться от использования xml в данном случае? Допустимое время — на порядок меньше.

Отказаться от DOM-модели, использовать SAX-модель.
Re[2]: Скорость обработки XML-файла
От: Udovitsky  
Дата: 16.06.05 14:05
Оценка:
A>Отказаться от DOM-модели, использовать SAX-модель.

И действительно время обработки будет на порядок меньше?
Re[3]: Скорость обработки XML-файла
От: achp  
Дата: 16.06.05 15:57
Оценка:
Здравствуйте, Udovitsky, Вы писали:

U>И действительно время обработки будет на порядок меньше?


Для многих приложений — да. Ведь при чтении XML-файла в модели DOM создаётся довольно громоздкое дерево. В модели SAX объём обработки определяется приложением, и зачастую может быть минимален.

Однако в некоторых областях модель SAX неприменима.
Re[4]: Скорость обработки XML-файла
От: Udovitsky  
Дата: 17.06.05 06:03
Оценка:
A>Однако в некоторых областях модель SAX неприменима.

Понятно. Спасибо. Похоже это как раз мой случай.
У меня до открытия окна этот файл должен быть полностью прочитан и проанализирован. Как я понял, в данном случае использовать xml — это однозначно в ущерб производительности. Возвращаюсь к бинарному файлу.
Re[5]: Скорость обработки XML-файла
От: B0rG  
Дата: 17.06.05 09:37
Оценка:
Здравствуйте, Udovitsky, Вы писали:

U>Понятно. Спасибо. Похоже это как раз мой случай.

U>У меня до открытия окна этот файл должен быть полностью прочитан и проанализирован. Как я понял, в данном случае использовать xml — это однозначно в ущерб производительности. Возвращаюсь к бинарному файлу.

Если Вас не интересует читабельность сериализуемых данных, тогда да — бинарник самое то. Если же интересует, то компутеры же не всегда будут такими медленными

Еще возможный вариант — воспользоваться ADO.NET и его сериализовать в xml и обратно — могет и побыстрее получится.
Re[5]: Скорость обработки XML-файла
От: achp  
Дата: 17.06.05 10:46
Оценка:
Здравствуйте, Udovitsky, Вы писали:

U>Понятно. Спасибо. Похоже это как раз мой случай.

U>У меня до открытия окна этот файл должен быть полностью прочитан и проанализирован.

SAX-модель не исключает такой процедуры. Если заведомо известна структура данных (а она известна, судя по тому, что рассматривается альтернатива в виде бинарного файла), можно считать файл, заставляя SAX-обработчики "распихивать" данные во внутренние структуры: это намного менее затратно, чем построение DOM-дерева, не накладывающего ограничений на структуру данных.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.