Название: Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks Отправлено: neosapient от Январь 22, 2009, 00:25 Добрый день.
Вопрос ламера. В стандартных примерах QT4 есть три схожие программы dombookmarks, saxbookmarks, streambookmarks. Хочется понять, зачем писали именно три схожих примера? Чем по функциональности отличаются базовые классы, на которых основаны данные примеры (dom, sax, stream)? Есть тезис, о том, что приходиться выбирать между быстротой(скорость исполнения), ценой(размер программы) и качеством(наверно, удобство в использовании). Какая из представленных программ демонстрирует самую высокую скорость разбиения xml-текста на базовые элементы (имеется в виду очень большой документ с глубиной вложености в 2-3 тега)? Название: Re: Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks Отправлено: xintrea от Январь 22, 2009, 01:20 По поводу DOM и SAX скажу кратко.
DOM распарсивает весь XML-документ и хранит копию всех данных в своем внутреннем представлении, по которому можно перемещаться, извлекать, вставлять данные с помощью методов DOM объекта. Наиболее жоркий с точки зрения памяти. Но позволяет легко сохранить XML документ без лишних движений, потому как преоразование из внутреннего представления в XML разметку происходит естественным алгоритмом, практически напрямую. SAX предназначен для потокового распарсивания XML-документа. Наименее жоркий с точки зрения расхода памяти. Имеет смысл применять при извлечении части данных из XML файла. Ну то есть, делать выборку информации из XML узлов по каким-то условиям, удобнее всего делать имеено через SAX. Естественно, с помощью SAX прогуляться по дереву XML документа не получится. Ну только если ты не будешь через SAX распарсивать документ в самодельную древовидную структуру. Но в этом случае прощще воспользоваться DOM, чем городить огород. По поводу Stream ничего внятного не скажу. Название: Re: Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks Отправлено: Dendy от Январь 22, 2009, 01:45 Ну только если ты не будешь через SAX распарсивать документ в самодельную древовидную структуру. Но в этом случае прощще воспользоваться DOM, чем городить огород. Согласен. Хочется добавить, что создание дерева DOM из крупного XML (несколько Мб) ест память как попкорн, а вместе с ним и время процессора. Поэтому если задача предполагает что потенциально на вход подастся толстый XML - лучше сразу парсить его через SAX, производительность увеличится на порядки. |