JFinalJson 性能初步测试代码

    昨天发布了 jfinal 4.9,在 oschina 上有人质疑 JFinalJson 性能是 jackson 的 3 倍,以下将前天使用的初步测试代码贴出来:

package com.jfinal.json;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class Performance {
	
	static long times = 100 * 10000;
	static long start, end;
	static Map<Object, Object> data = new HashMap<>();
	
	static void prepare() {
		data.put("key1", 1);
		data.put("key2", new Date());
		data.put("key3", "奔涌吧后浪");
	}
	
	static void start() {
		start = System.currentTimeMillis();
	}
	
	static void end() {
		end = System.currentTimeMillis();
		System.out.println(end - start);
	}
	
	static String test(Json json) {
		String ret = "";
		start();
		for (int i=0; i<times; i++) {
			ret = json.toJson(data);
		}
		end();
		return ret;
	}
	
	public static void main(String[] args) {
		prepare();
		String ret;
		
		ret = test(Jackson.getJson());
		System.out.println(ret);	
		
		ret = test(JFinalJson.getJson());
		System.out.println(ret);
	}
}


    这里重申一下,这个测试代码十分初步,并不能说明 JFinalJson 的性能就一定比 jackson 高出 3 倍。

     JFinalJson 这次的优化的原因是老版本是 9 年前的代码,完全没有考虑性能,jfinal 一直在打磨迭代,这次轮到打磨 JFinalJson。

     JFinalJson 作为 jfinal 中的一个非专业性的 json 小工具,并未刻意追求高性能,也没有用到什么奇奇怪怪的优化方法,这次性能提升到这个程度,我自己也万万没想到。


评论区

zhangtianxiao

2020-05-31 14:07

嘀嘀嘀嘀嘀

GXS

2020-05-31 23:14

安全性如何?fastjson都快被整出阴影了

JFinal

2020-05-31 23:31

@GXS JFinalJson 只将 java 对象转成 json string,不存在任何安全性问题

安全问题通常是 json string 转 java 对象时出现

lyh061619

2020-06-01 17:24

研发项目环境主要是ajax+pjax做异步请求,数据交互为格式:json,这个优化提升很的确非常明显,4.9一放出直接改版本号上去,都能感觉到速度这提速效果。

JFinal

2020-06-01 17:43

@lyh061619 这个优化是非常值得的,因为现在越来越多的 jfinal 项目是当成 json server 端来使用的

性能大幅提升,用户体验更好。官方新增的字段名转驼峰支持,对于使用下划线 mysql 字段以及 oracle 数据库是很大的福音