Как ускорить загрузку файла большего размера, используя Loadfile () в Tinyxml - PullRequest
0 голосов
/ 14 декабря 2011

В моем проекте мне нужно добавить новые данные в xml, поэтому я делаю это, как показано ниже: вопрос в том, работает ли функция LoadFile () медленно, когда файл xml большой, а высокопроизводительный процессор SaveFile () имеетта же проблема.Итак, как мне ускорить мой проект.Спасибо вам за помощь:)

        TiXmlDocument doc(m_filePath.c_str()); 
    (void)doc.LoadFile(); //here is slowly
    if (doc.Error() && (doc.ErrorId()==TiXmlBase::TIXML_ERROR_OPENING_FILE))
    {
        ATS_LOG(ERROR, "Can not open the file:%s", m_filePath.c_str());
        result = false; 
    }
    else
    {
        const TiXmlHandle docH(&doc); 
        TiXmlElement* const element = docH.FirstChildElement("HistoryMsgs").Element();
        TiXmlNode* const pNode=element->ToElement();
        if (pNode!=NULL)
        {
                            //do something that insert new node;
            (void)doc.SaveFile(m_filePath.c_str());//here is slowly too
        }
    }

1 Ответ

0 голосов
/ 14 декабря 2011

TinyXML имеет некоторые проблемы с производительностью. RapidXML и PugiXML являются более предпочтительными. Я не уверен, насколько легко было бы перенести ваш код на новый синтаксический анализатор, но у меня однажды были проблемы с производительностью в TinyXML, а затем я переключился на PugiXML. Вы можете проверить обсуждение синтаксических анализаторов C ++: Какой самый лучший парсер открытого XML для C ++?

...