TinyXml 与 Rapidxml效率对比

以前在做开始中一直没用TinyXml,在网上搜索说Rapidxml的效率比tinyXml高。个人比较喜欢追求效率,所以忍不住尝试性使用Rapidxml。RapidXml 的官方网站如下: http://rapidxml.sourceforge.net/manual.html

RapidXml是一个使用C++编写的XML DOM解析工具包,整个解析工具包包含在一个头文件中,所以使用时不用编译也不用连接。只要包含rapidxml中的三个头文件即可。RapidXml
试图成为最快的 XML DOM 解析工具包,同时保证解析结果的可用性、可移植性以及与 W3C 标准的兼容性。在操作同一数据时,其解析速度接近于 strlen() 函数。以下是RapidXml提供的常见xml库效率对照表,其中还很牛鼻地提供了和strlen()函数的效率对比。如下图是其他网友提供非本人对比数据:

二、简单使用

包含必要的头文件

#include "rapidxml.hpp"

创建文档对象

rapidxml::xml_document<char> doc;

分析xml字符串,要求以‘\0‘结尾

std::string str(...);

doc.parse<0>(const_cast<char *>(str.c_str()));

获取节点

rapidxml::xml_node<char> * node = doc.first_node("node name");

遍历所有节点

for(rapidxml::xml_node<char> * node = parent_node->first_node("node name");

node != NULL;

node = node->next_sibling())

{

...

}

时间: 2024-10-13 21:13:37

TinyXml 与 Rapidxml效率对比的相关文章

TinyXml 与 Rapidxml效率对照

曾经在做开发中一直使用TinyXml,在网上搜索说Rapidxml的效率比tinyXml高.个人比較喜欢追求效率.所以忍不住尝试性使用Rapidxml. RapidXml 的官方站点例如以下: http://rapidxml.sourceforge.net/manual.html. RapidXml是一个使用C++编写的XML DOM解析工具包,整个解析工具包包括在一个头文件里.所以使用时不用编译也不用连接.仅仅要包括rapidxml中的三个头文件就可以.RapidXml 试图成为最快的 XML

Oracle常用导出导出命令及性能效率对比

说明 Oracle导入导出命令主要有EXPDP和IMPDP.EXP和IMP,区别如下:EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用.EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用.IMP只适用于EXP导出的文件,不适用于EXPDP导出文件:IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件.expdp或impdp命令时,可暂不指出用户名/密码@实例名as 身份,然后根据提示再输入,如:expdp schem

CMap与hash_map效率对比

CMap与hash_map底层均采用hash stable实现,CMap是MFC提供的模板类.hash_map虽然目前并未纳入C++标准模板类库,但几乎每个版本的STL都提供了相应的实现.CMap与hash_map的存储于查询效率比较如下: 利用rand函数随机生成99999个整数构成查询数据集,紧接着申请9999个整数作为查询.测试两个模板类的插入与查询总时间,测试结果显示:当查询都不存在时CMap时间大约16ms,hash_map为0ms:当大部分查询存在时CMap时间为624,而hash_

Snapman系统中TCC执行效率和C#执行效率对比

Snapman集合了TCC编译器可以直接编译执行C语言脚本,其脚本执行效率和C#编译程序进行效率对比,包括下面3方面: 1.函数执行效率 2.数字转换成字符串 3.字符串的叠加 这是C#代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Tex

java StringBuffer,StringBuilder,String自身连接效率对比

当我们仅仅需要a+b 的时候,两个字符串链接任何方法的效率基本一样,都在0.0001毫秒内就可以完成.不过如果需要1万次,10000万次,就会发现string自身的join速度显著下降 package com.java.lang; public class StringTest { int MAX = 10000; //1万次累加 public String Buffer(){ StringBuffer sb = new StringBuffer(); for(int i = 0; i < MA

golang 浮点数 取精度的效率对比

需求 浮点数取2位精度输出 实现 代码 package main import ( "time" "log" "strconv" "fmt" ) func main() { threadCount := 100000 fa := 3.233667 time1 := TestFn(threadCount,fa,func(fa float64) string{ return strconv.FormatFloat(fa,'f',2

类的构造及初始化效率对比

基础数据结构: struct A { int a; int b; int c; int d; int e; int f; int g; }; 初始化次数:const int MAX_LOOP_NUM = 100000000; 第一种方式: 无初始化 struct A { A() { } int a; int b; int c; int d; int e; int f; int g; }; for(int index = 0; index < MAX_LOOP_NUM; ++index) { A

Android Ant 和 Gradle 打包流程和效率对比

一.Ant 打包:(下载ant.配置环境变量就不说了) 1.进入命令行模式,并切换到项目目录,执行如下命令为ADT创建的项目添加ant build支持: android update project -p . -t  "android-17" 2.build脚本默认target是help,所以会显示如上信息,修改target为debug或release就可以像无ant时一样编译.生成以及调试了. 3.使用release时  在local.properties添加签名信息 #keysto

Hibernate查询效率对比

查询已知表名的实体时推荐使用getHibernateTemplate().executeWithNativeSession() + SQLQuery方式. 以下测试使用JUnit进行,仅查询一次,查询结果为5条记录.各种方式的详细代码及执行时间如下所示: 方式1,正常getHibernateTemplate().find()方式(183ms): [java] view plaincopy List list = getHibernateTemplate() .find( "select o.id