分布式计算的广泛应用,使得浏览器与服务器之间,或者不同的服务器之间的(异构)应用程序之间对话的需求变得十分普遍。在这个背景下,JSON、xml被广泛采用,然而这些通用的数据结构的使用是需要付出昂贵的代价的,主要体现在对cpu资源和io资源的特殊需求上,包括对json/xml数据流的解析产生的计算需求,以及传输过程中tag标签所引起的额外数据输出开销,另外一方面,xml/json作为应用程序基础库,被使用的频率是非常高的,在高并发、高吞吐量情况下,所产生的额外开销是惊人的。
因此,如何选取高效的json/xml解析器,事关应用程序的整体性能。
本人过去开发经历中,使用过很多主流开源json/xml解析器,也曾经花费很长时间寻找高性能解析器,总体感觉是目前的常用解析器性能普遍不好,主要原因有为了符合相关规费,在通用性上考虑的太多,比如对xml namespace的支持等,这些都对解析器在解析过程中产生了一些额外的开销,包括计算上和内存使用上的开销;也有算法上的因素,各种开源的解析器仅开源了代码,并没有开源设计,造成开源的解析器代码比较难于理解。
两年前,发现实在是无法找到符合自己需求的解析器,所以终于下定决心定制开发一个满足特定需求的,尽量通用的最高效的解析器,终于,经过一个多月的开发、重构、调优,开发完成了自认为是最高效的json/xlm解析器,并与一个高效的开源xpath解析器融合起来,开发出一个非常好的“esb产品",完全配置化,速度性能超一流,完全胜过国外主流ESB产品。
吹牛的话不说了,今天喝了点酒,决定把解析器相关的一