SlimXml和TinyXml,RapidXml的性能对比
前两天有朋友问,我的SlimXml有没有和RapidXml对比过效率?我是第一次听说这个库,更不用说对比效率了,于是上他们网站看了下。
好家伙,居然号称比TinyXml快30~60倍,而且是Boost.PropertyTree的默认xml解析器。
于是有点好奇,因为以前也没有特别关心过SlimXml的效率。
于是分别下载了TinyXml-2.6.1和RapidXml-1.13,迅速用vc8建立了两个测试工程,在系统中搜”*.xml”,找到了一个比较合适的测试文件。它足够大(1.5M),utf-8编码并且包含中/英文,有一定层次深度,大约3.3万行。测试文件可以从这里下载
测试对象是三个库从内存字符串解析xml的函数,这样能排除从硬盘上读文件这种不稳定因素的干扰,而且RapidXml貌似只支持从内存里解析
- slim::XmlDocument::loadFromMemory()
- TiXmlDocument::Parse()
- rapidxml::xml_document<char>::parse<flag>()
要说明的是,RapidXml的这个parse是一个模板函数,必须给一个flag的参数,我测试的时候给的是默认的0
测试结果,解析这个3.3万行,1.5M大小的xml,三个库分别花了
- SlimXml: 22ms
- TinyXml: 54ms
- RapidXml: 4ms!