XML解析到底能多快?

本文作者探讨了在处理大量XML配置文件时,针对XML解析效率的研究。通过自定义解析器,实现了只做一次扫描分析、使用查表法、模板编程等优化手段,使解析性能接近于`strlen`函数,甚至在某些测试中与RapidXML相当。作者指出,XML解析的性能差距在实际应用中可能被内存管理和存储操作所掩盖,并建议在选择协议时考虑可读性和维护性。
摘要由CSDN通过智能技术生成

【经验总结】XML解析到底能多快?

----by abllen

近来,因为工作的关系,需要对大XML文件进行解析使用,就专门对解析效率问题作了下研究。 

 

场景:

在我们的场景中,会将大量的业务配置信息存放在DB, 便于前端修改, 后端使用时,会先将DB导出到本地XML格式文件,再各自加载。 这里之所以不直连数据库一是考虑后端高并发时的性能问题,二是数据一般变动不频繁,存放XML也合适。

起初也曾参考一些现有的xml解析库,但由于我们的XML文件都是从DB导出的,对有些情况不很合适,因而考虑手写。

 

为什么会手写:

1  允许xml的key为纯数字,因为要从数据库导出到XML,而数据库的内容往往难以避免有纯数字的出现

2  允许空key,数据库里往往使用空字段表示默认,也比较方便

3  兼容xml格式,更好的出错说明

我们希望使用完全的自左向右扫描分析,如对

<a><as od=sdsd</as></a>

能提示a/as key缺少>更好些, 而不是某一行缺少闭合的>不完整

Tips:曾经对一个800K的上万行xml文件进行排错,包括notepad++/chrome/IE 等浏览器的出错信息让人崩溃,往往只有  某一行缺少;等

4  更好的把握

5  学习,只有亲手写并和其他解析器对比,才能知道真正的瓶颈和问题在哪,希望能挖掘性能极限,看解析究竟能有多快

 

经过一段时间的调教,得到如下结果:

1  俺的满足系统要求的XML解析器核心代码只有50行,纯模板,外围功能还支持增量解析合并,易用

2  解析性能可以对比 strlen 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值