Как ускорить загрузку файла большего размера, используя Loadfile() в Tinyxml
В моем проекте мне нужно добавить новые данные в 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 ответ
Решение
У TinyXML довольно много проблем с производительностью. RapidXML и PugiXML являются более предпочтительными. Я не уверен, насколько легко было бы перенести ваш код на новый синтаксический анализатор, но у меня однажды были проблемы с производительностью в TinyXML, а затем я переключился на PugiXML. Вы можете проверить обсуждение синтаксических анализаторов C++ на тему: Какой самый лучший открытый синтаксический анализатор XML для C++?