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

发布于 2024-12-21 00:49:10 字数 823 浏览 1 评论 0原文

在我的项目中,我需要将新数据附加到 xml,所以我这样做: 问题是当 xml 文件很大并且 CPU 较高时,LoadFile() 函数非常慢,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
        }
    }

In my project I need append new data to a xml, so I do it like below:
the question is the LoadFile() funcation is so slowly when the xml file is large, and high-cpu, the SaveFile() have same problem. So, How should I speed up in my project.
Thanks you help:)

        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
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会傲 2024-12-28 00:49:10

TinyXML 有相当多的性能问题。 RapidXML 和 PugiXML 是更优选的。我不确定将代码移植到新的解析器有多容易,但我曾经使用 TinyXML 遇到过性能问题,然后切换到 PugiXML。您可以查看有关 C++ 解析器的讨论:
适用于 C++ 的最佳开放式 XML 解析器是什么?

TinyXML has quite some performance issues. RapidXML and PugiXML are more preferred. I'm not sure how easy would it be to port your code to a new parser, but I had performance issues once with TinyXML and then switched to PugiXML. You might check out a discussion on C++ parsers on:
What is the best open XML parser for C++?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文