解决方案 »
- 关于WriteFile写不了数据.
- 资源添加问题
- MFC集合类问题
- 为什么我的代码会报“Invalid Address specified to RtlFreeHeap”这个错误???
- 如何初始化子对话框中得定时器
- 在编辑框里如何实现从键盘中输入数字串(123426),但在编辑框里显示的是星号(******)
- Sleep和OnTimer的问题?
- Queryinterface的怪事,高手快来(跟帖有分)
- 300分求助:请问谁有实现B+树,散列,位图等各种索引的c++源代码!收到散分!
- 如何在右键菜单里添加自己编写的功能 望指点
- WININET GET得到header 后少了几行数据的小问题
- VC中监控某个应用程序
CMarkup中添加的代码中,AddElem是字符串组合成<p1>value</p1>格式,这时是在内存中进行的。
添加完所有元素时候,再SaveXML()函数保存到路径。
SaveXML执行时间不长,只有2-4s,关键是前面的添加元素之类的时间消耗很长,但这时是在内存中操作的啊!
//修改当前节点子项的内容,没有则添加子项
void CXMLFiles2::ModifySubItem(const CString paramName, const CString paramValue)
{
m_content += _T("<");
m_content += paramName;
m_content += _T("<![CDATA[");
m_content += _T("]]></");
M_content += paramValue;
m_content += _T(">");
}最后完成时使用CFile保存字符串m_content ,发现用的时间还是有14~20s。其中字符串拼接的过程耗时最大,最后保存时间较少。
不知道是写文件本来就这么慢,还是程序的问题??
请问这是在wince下测试的么?
CMarkup在XP下运行速度还是很快的,但到了wince下就慢的很了
CMarkup在XP下运行速度还是很快的,但到了wince下就慢的很了
rapidxml操作确实快了很多啊,但是最后一步保存该怎么写啊,慢死了!std::ofstream out(filename);
out << *doc;
out.close();/*
结果:
总共耗时:30.4s
保存耗时:29.9s
*/std::string text;
rapidxml::print(std::back_inserter(text), *doc, 0); /*
结果:
总共耗时:66.4s
保存耗时:65.7s
*/XML最后大小2.32MB,参数10800个
rapidxml::print(std::back_inserter(text), *doc, 0);
这一步用了60多秒??
是啊!就是这里很慢的!
我看了源码,发现在print这里,它才开始循环所有的节点生成XML字符串。所以速度很慢。