0

私のプロジェクトでは、新しいデータを xml に追加する必要があるので、以下のようにします: 問題は、xml ファイルが大きく、CPU が高い場合、SaveFile() に同じ問題がある場合に LoadFile() 関数が非常に遅くなることです。では、私のプロジェクトではどのように高速化すればよいでしょうか。助けてくれてありがとう:)

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

1 に答える 1

0

TinyXML にはかなりのパフォーマンスの問題があります。RapidXML と PugiXML がより好ましいです。コードを新しいパーサーに移植するのがどれほど簡単かはわかりませんが、TinyXML で一度パフォーマンスの問題が発生し、その後 PugiXML に切り替えました。C++ パーサーに関するディスカッションをチェックしてみてください: What is the best open XML parser for C++?

于 2011-12-14T06:53:29.800 に答える