XML解析到底能多快?

【经验总结】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 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值