加载较大文件时如何加速使用Tinyxml中的Loadfile()

时间:2011-12-14 06:42:26

标签: c++ tinyxml

在我的项目中,我需要将新数据附加到xml,所以我这样做: 问题是当xml文件很大时,LoadFile()函数是如此缓慢,而高CPU,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 :(得分:0)

TinyXML存在一些性能问题。 RapidXML和PugiXML是更优选的。我不确定将代码移植到新的解析器是多么容易,但是我在使用TinyXML时遇到了性能问题,然后切换到了PugiXML。您可以查看有关C ++解析器的讨论: What is the best open XML parser for C++?