论坛首页 Java企业应用论坛

自己写了一个JsonLib

浏览 8082 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-04  
其实是有办法获取泛型信息的.
0 请登录后投票
   发表时间:2010-02-04  
楼主,你的JSON,还是基于JAVA的反射写的吗,我觉得JSON快慢的瓶颈应该在反射这快,JAVA的反射很慢的
0 请登录后投票
   发表时间:2010-02-04   最后修改:2010-02-04
kjj 写道
我一直用gson1.4楼主测了吗


gson 是最慢的。下面是它跟其他几种序列化的效率比较:

                           Object create       Serialize     Same Object     Deserialize      Total Time Serialized Size
hprose                         201.41821      7205.74650      6612.54050     11117.96050     18323.70700        533
hessian                        202.71568      8752.81950      7708.42500     14302.63700     23055.45650        526
php                            200.86843     34505.29950     33871.77200     19037.86800     53543.16750        755
java                           200.71633     12600.34350     11281.97850     55721.38500     68321.72850        919
json/google-gson               203.92885    279103.18900    279887.89850    327122.74450    606225.93350        470


其中上表中各个版本如下:
hprose 是 1.0 版本
hessian 是 4.0.1 版本
php 是 phprpc 3.0 版本
java 是 6.0 内置序列化
json/google-gson 是 gson 1.4 版本。

gson 慢的不是一个数量级的问题。
0 请登录后投票
   发表时间:2010-02-04  
纯粹出于好奇:请问楼主能否把顶楼里第一个测时的代码的顺序换一下,就是说先跑DefaultJsonEncoder再跑JSONObject,也拿来比较一下?想看看这样在楼主的环境里得到的输出如何。

另外还想看看楼主的测试环境中使用-server之后的性能比较。最近我写了个东西,觉得对性能不满意,然后做了一点“改进”,结果在client模式上性能显著提升,但在server模式上性能却显著下降,让我郁闷得不行。到现在都还没分析清楚到底是怎么回事……
0 请登录后投票
   发表时间:2010-02-05  
修改了两个BUG。。。。
看来我2年多白学了。。。。。。

上面的文件是最新的

效率,我也不敢保证了,至少没发现一个很好的方法去判断一个的Class类是否属于一个Collection的子类或子接口,所以使用了递归的方式。。。确实效率没保证啊。。。哎

至于那个反射的速度问题。。。我也不好说什么。。反射本来就慢,这点毫无疑问
0 请登录后投票
   发表时间:2010-02-05  
yefeng 写道
楼主,你的JSON,还是基于JAVA的反射写的吗,我觉得JSON快慢的瓶颈应该在反射这快,JAVA的反射很慢的

有更好的提议么?似乎动态性只能用反射吧?
我的慢应该是递归的问题。。。
算法木学好
0 请登录后投票
   发表时间:2010-02-05   最后修改:2010-02-05
这段解析代码,用了很久,一直工作的很好,楼主可以看看:


源代码:
http://code.google.com/p/nutz/source/browse/#svn/trunk/src/org/nutz/json

测试用例:
http://code.google.com/p/nutz/source/browse/trunk/test/org/nutz/json/JsonTest.java

文档:
http://code.google.com/p/nutz/downloads/detail?name=Nutz_Json_Book.pdf&can=2&q=#makechanges

0 请登录后投票
   发表时间:2010-02-06  
关于json-lib和jackson的比较,我这里有个简单的测试,楼主也可以看一下。。。
http://www.iteye.com/topic/561368
jackson效率确实很高,而且很好用,不像json-lib反序列化的还是自己的结构。
可以去研究研究jackson的源码
0 请登录后投票
   发表时间:2010-02-06  
zcy860511 写道
修改了两个BUG。。。。
看来我2年多白学了。。。。。。

上面的文件是最新的

效率,我也不敢保证了,至少没发现一个很好的方法去判断一个的Class类是否属于一个Collection的子类或子接口,所以使用了递归的方式。。。确实效率没保证啊。。。哎

至于那个反射的速度问题。。。我也不好说什么。。反射本来就慢,这点毫无疑问


判断一个Class是否属于一个Collection的或子接口,用instanceof不就行了?
例如:
List list = new ArrayList();
if (list instanceof Collection) {
    //todo something
}


还有一种方式,
List list = new ArrayList();
if (Collection.class.isAssignableFrom(list.getClass()) {
    //todo something
}

0 请登录后投票
   发表时间:2010-02-06  
zcy860511 写道
yefeng 写道
楼主,你的JSON,还是基于JAVA的反射写的吗,我觉得JSON快慢的瓶颈应该在反射这快,JAVA的反射很慢的

有更好的提议么?似乎动态性只能用反射吧?
我的慢应该是递归的问题。。。
算法木学好


用动态规划 试试
0 请登录后投票
论坛首页 Java企业应用版

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