package test.utils.json.github; import java.util.Arrays; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.firefly.utils.json.Json; import com.firefly.utils.json.JsonObject; public class JsonBenchmark { public static MediaContent createRecord() { String url = "http://javaone.com/keynote.mpg"; // String url = "testURL"; MediaContent record = new MediaContent(); Media media = new Media(); media.setUri(url); media.setTitle("Javaone Keynote"); media.setWidth(640); media.setHeight(480); media.setFormat("video/mpg4"); media.setDuration(18000000); media.setSize(58982400); media.setBitrate(262144); media.setPersons(Arrays.asList(new String[]{"Bill Gates", "Steve Jobs"})); media.setPlayer(Player.JAVA); media.setCopyright(null); record.setMedia(media); Image image1 = new Image(); image1.setUri(url); image1.setTitle("Javaone Keynote"); image1.setWidth(1024); image1.setHeight(768); image1.setSize(Size.LARGE); Image image2 = new Image(); image2.setUri(url); image2.setTitle("Javaone Keynote"); image2.setWidth(320); image2.setHeight(240); image2.setSize(Size.SMALL); record.setImages(Arrays.asList(image1, image2)); return record; } public static void init() { MediaContent record = createRecord(); String json = Json.toJson(record); System.out.println(json); MediaContent r = Json.toObject(json, MediaContent.class); System.out.println(r); System.out.println(); json = JSON.toJSONString(record); System.out.println(json); r = JSON.parseObject(json, MediaContent.class); System.out.println(r); System.out.println(); } public static void main(String[] args) throws Throwable { init(); final int times = 1000 * 1000 * 1; long fastjsonTotal = 0L; long fireflyTotal = 0L; fastjsonTotal += fastjsonParserTest(times); fireflyTotal += fireflyJsonParserTest(times); System.out.println("======================"); fastjsonTotal += fastjsonSerializerTest(times); fireflyTotal += fireflyJsonSerializerTest(times); System.out.println("======================"); fastjsonTotal += fastjsonParserWithoutObjectbindTest(times); fireflyTotal += fireflyJsonParserWithoutObjectbindTest(times); System.out.println("======================"); System.out.println("fastjson total time: " + fastjsonTotal + ", QPS: " + times * 3 / (fastjsonTotal / 1000.00)); System.out.println("firefly total time: " + fireflyTotal + ", QPS: " + times * 3 / (fireflyTotal / 1000.00)); } public static long fireflyJsonSerializerTest(final int times) { MediaContent record = createRecord(); String json = null; long start = System.currentTimeMillis(); for (int i = 0; i < times; i++) { json = Json.toJson(record); } long end = System.currentTimeMillis(); System.out.println("firefly json serializer: " + (end - start)); System.out.println(json); return end - start; } public static long fireflyJsonParserTest(final int times) { MediaContent record = createRecord(); MediaContent r = null; String json = Json.toJson(record); long start = System.currentTimeMillis(); for (int i = 0; i < times; i++) { r = Json.toObject(json, MediaContent.class); } long end = System.currentTimeMillis(); System.out.println("firefly json parser: " + (end - start)); System.out.println(r); return end - start; } public static long fireflyJsonParserWithoutObjectbindTest(final int times) { MediaContent record = createRecord(); JsonObject r = null; String json = Json.toJson(record); long start = System.currentTimeMillis(); for (int i = 0; i < times; i++) { r = Json.toJsonObject(json); } long end = System.currentTimeMillis(); System.out.println("firefly json parser without object bind: " + (end - start)); System.out.println(r); return end - start; } public static long fastjsonSerializerTest(final int times) { MediaContent record = createRecord(); String json = null; long start = System.currentTimeMillis(); for (int i = 0; i < times; i++) { json = JSON.toJSONString(record); } long end = System.currentTimeMillis(); System.out.println("fastjson serializer: " + (end - start)); System.out.println(json); return end - start; } public static long fastjsonParserTest(final int times) { MediaContent record = createRecord(); MediaContent r = null; String json = JSON.toJSONString(record); long start = System.currentTimeMillis(); for (int i = 0; i < times; i++) { r = JSON.parseObject(json, MediaContent.class); } long end = System.currentTimeMillis(); System.out.println("fastjson parser: " + (end - start)); System.out.println(r); return end - start; } public static long fastjsonParserWithoutObjectbindTest(final int times) { MediaContent record = createRecord(); JSONObject r = null; String json = JSON.toJSONString(record); long start = System.currentTimeMillis(); for (int i = 0; i < times; i++) { r = JSON.parseObject(json); } long end = System.currentTimeMillis(); System.out.println("fastjson parser without object bind: " + (end - start)); System.out.println(r); return end - start; } }