论坛首页 Java企业应用论坛

吹牛:我写的JSONParser可能是这个星球上最快了(Java)

浏览 143278 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-12-22  
之前研究过jackson,做过性能测试,序列化性能跟直接写死的StringBuffer拼接性能很接近,楼主的fast-json这么牛B,期待楼主开源,好让大伙使用。
0 请登录后投票
   发表时间:2010-12-22   最后修改:2010-12-22
chris_zley 写道
楼主多讲讲写parser的经验嘛。。


手写parser并不是很困难的事情,熟悉之后,你也许会觉得很简单。有很多开源的代码可以借鉴,比如说OpenJDK中javac的源码。

一般的做法都是把词法和文法分开。词法的实现通常比较简单,很容易实现,不会写的话,从javac中抄一个也是可以的,一般词法分析的实现都叫Lexer或者Scanner。有了词法之后,就需要构建文法,文法的实现也是很简单的,类似Java、SQL文法解析,复杂一点点的就是运算符优先级的处理了,这也简单,搞过一次之后按照运算符优先级做某种递归的处理就OK了。文法分析的实现一般都叫做Parser。

总之,都是你一旦掌握之后就觉得很简单的事情。

手写的Parser一般都比工具生成的要快得多,比如antlr、javacc之类的生成的代码,效率都很低的,商用编译器的parser大多都是手写的。SimpleJSON应该是使用javacc生成的parser,性能不好,而且一旦出错,错误提示非常不好!!Jackson不是手写的Parser,但是感觉它写Parser还不是很专业的,但是其中用了一些技巧,专门针对某种场景优化的,对JSONObject中的key做了优化,如果输入文本中存在N个JSONObject,而且Key是一样的,他的性能会得到优化得到提升,我认为加入这个优化不值得,因为这种场景的优化,会导致其他场景的性能降低。我写的Parser,不需要对特别场景优化,对于Jackson优化过的场景,性能也是一样的,甚至略快一点点。
5 请登录后投票
   发表时间:2010-12-22  
GRDJE 写道
弄点那民工货, 瞧那得意样......

吹牛好玩嘛,何必那么认真呢,而且我也不是凭空吹牛的,看不惯别看好了
0 请登录后投票
   发表时间:2010-12-22  
GRDJE 写道
弄点那民工货, 瞧那得意样......

看了你的回帖,动不动就“民工货”“没见过大公司的软件”。
送你一句话: 夫学贵得之心,求之于心而非也,虽其言之出于孔子,不敢以为是也,而况其未及孔于者乎?求之于心而是也,虽其言之出于庸常,不敢以为非也,而况其出于孔子者乎?
0 请登录后投票
   发表时间:2010-12-22  
willothe 写道
GRDJE 写道
弄点那民工货, 瞧那得意样......

看了你的回帖,动不动就“民工货”“没见过大公司的软件”。
送你一句话: 夫学贵得之心,求之于心而非也,虽其言之出于孔子,不敢以为是也,而况其未及孔于者乎?求之于心而是也,虽其言之出于庸常,不敢以为非也,而况其出于孔子者乎?
不错不错, 对我印象很深麻....
0 请登录后投票
   发表时间:2010-12-22  
wenshao 写道
GRDJE 写道
弄点那民工货, 瞧那得意样......

吹牛好玩嘛,何必那么认真呢,而且我也不是凭空吹牛的,看不惯别看好了

不是说吹不吹牛, 就那两行代码, 有啥好开心的, 自娱自乐罢了..啥都不是....
0 请登录后投票
   发表时间:2010-12-22  
GRDJE 写道
wenshao 写道
GRDJE 写道
弄点那民工货, 瞧那得意样......

吹牛好玩嘛,何必那么认真呢,而且我也不是凭空吹牛的,看不惯别看好了

不是说吹不吹牛, 就那两行代码, 有啥好开心的, 自娱自乐罢了..啥都不是....



这个GRDJE 估计是重庆HP的 专干外包活 
0 请登录后投票
   发表时间:2010-12-22  
callofseen 写道
GRDJE 写道
wenshao 写道
GRDJE 写道
弄点那民工货, 瞧那得意样......

吹牛好玩嘛,何必那么认真呢,而且我也不是凭空吹牛的,看不惯别看好了

不是说吹不吹牛, 就那两行代码, 有啥好开心的, 自娱自乐罢了..啥都不是....



这个GRDJE 估计是重庆HP的 专干外包活 

这都被你看出来啦, 你当你FBI啊.....
0 请登录后投票
   发表时间:2010-12-22  
JE精典又出现了,吹牛都可以吹出精华贴,哈哈。
0 请登录后投票
   发表时间:2010-12-22  
期待LZ的code
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics