json转化过慢的调优
json转化过慢的调优
最近系统响应很慢,后来发现和SQL也关系不大。
跟踪程序后发现,和JAVA对象转化为JSON对象有一定的关系,也算是优化的一个方面吧。
json的官方网站
http://json.org/
找到一个遇到类似问题的朋友,参考他的日志
http://hi.baidu.com/camaro/blog/item/384b31e9e7bae237b90e2d44.html
http://twit88.com/blog/2008/07/11/java-json-parser-performance/
My test is simple.
Create a JSON object
Add few String objects to the object
Serialize and deserialize the JSON object
Loop the above for 1 million times
The performance of the above libraries sorted in order
Jackson
Noggit
JSON-lib
我使用的也是JSON-lib,NND,测试一下排名前面的两个东东试试。
jackson首页
http://jackson.codehaus.org/
下载地址
http://wiki.fasterxml.com/JacksonDownload
文档地址
http://wiki.fasterxml.com/JacksonInFiveMinutes
下载到jar jackson-xc-1.2.0.jar,jackson-core-asl-1.2.0.jar,jackson-mapper-asl-1.2.0.jar,jackson-jaxrs-1.2.0.jar
User user = new User();
user.setEmail("luohuazju@hotmail.com");
user.setIdxNum(Integer.valueOf(1));
user.setLoginId("luohuazju");
Company u = new Company();
u.setName("handsome");
u.setLocation("四u24029 ");
user.setCompany(u);
Map item = new HashMap();
item.put("user", user);
JSONObject jo = JSONObject.fromObject(item, configJson());
System.out.println("=============json lib====================");
System.out.println(jo.toString());
System.out.println("=============json lib====================");
System.out.println("=============jackson lib====================");
System.out.println(getJsonString(item));
System.out.println("=============jackson lib====================");
private static JsonConfig configJson() {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
return jsonConfig;
}
private static String getJsonString(Object item) {
JsonFactory jf = new JsonFactory();
try {
StringWriter sw = new StringWriter();
JsonGenerator gen = jf.createJsonGenerator(sw);
new ObjectMapper().writeValue(gen, item);
gen.flush();
return sw.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
单元测试,没有问题,但是在实际的UserController中,user中有company对象,company中有users对象。导致了如下错误:
报错:
DEBUG DispatcherServlet - Could not complete request
Caused by: java.lang.StackOverflowError
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:71)
at org.codehaus.jackson.map.ser.BeanPropertyWriter$StdMethod.serializeAsField(BeanPropertyWriter.java:215)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:58)
at org.codehaus.jackson.map.ser.BeanPropertyWriter$StdMethod.serializeAsField(BeanPropertyWriter.java:215)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:58)
搜索到的结果,目前无法解决,要等待1.3版本
noggit的SVN地址
http://svn.apache.org/repos/asf/labs/noggit/
pom.xml注释掉有关eclipse的插件那块
命令 mvn clean
命令 mvn install
编译得到jar包noggit-1.0-SNAPSHOT.jar
玩不来,以后再看看。
gson首页
http://code.google.com/p/google-gson/
代码片段
Gson gson = new Gson();
String json = gson.toJson(item);
System.out.println("=============gson lib====================");
System.out.println(json);
System.out.println("=============gson lib====================");
但是当item中对象有循环引用时报错:
Exception in thread "main" java.lang.IllegalStateException: Circular reference found: cn.sccl.um.model.User@26d4f1
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:108)
暂时没有找到解决办法,算了,暂时解决对象中的循环调用吧。
json转化过慢的调优相关推荐
- 性能调优之三十六计 —— 「取而代之」Echo/Json 篇
文章目录 性能调优之三十六计 -- 「取而代之」Echo/Json 篇 Echo 高性能.极简框架 C.JSON Json-iterator Q&A 附录 性能调优之三十六计 -- 「取而代之 ...
- B站Up主上传质量调优实践
Up主上传的大量优质视频内容使得bilibili(B站)深受年轻用户的喜爱.bilibili视频云高级研发经理 唐君行在LiveVideoStack线上交流分享中详细介绍了B站为提供更流畅.稳定用户体 ...
- 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例
大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...
- hive-关系运算符-存储压缩-hive调优
函数方法 关系运算符 和where配合使用完成条件判断 查看函数方法 show functions ; desc function extended isnull; 关系运算符的方法 -- 空值判断 ...
- lightGBM参数解析及其参数调优
lightGBM官网中文文档! LightGBM是打比赛如CCF大数据与天池大数据竞赛的经常被使用的模型 一:模型简介 lightgbm是xgboost的加强升级版. LightGBM=XGBoost ...
- 2023-Hive调优最全指南
本文基本涵盖以下内容: 一.基于Hadoop的数据仓库Hive基础知识 二.HiveSQL语法 三.Hive性能优化 四.Hive性能优化之数据倾斜专题 五.HiveSQL优化十二板斧 六.Hive面 ...
- Java 编程性能调优
把 Java 性能调优分成 5 个层级:Java 编程.多线程.JVM 性能检测.设计模式.数据库性能,每个层级下都覆盖了最常见的优化问题.下面分别给你梳理一下: 可参考地址:Java性能调优全攻略来 ...
- 2021年大数据Hive(十一):Hive调优
全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive调优 一.本地模式 1.空key处理 二.SQL ...
- hive性能调优实战pdf_Nginx 性能调优实战
来自:Linux社区 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpui ...
最新文章
- [iOS]调和 pop 手势导致 AVPlayer 播放卡顿
- Mac git clone速度太慢
- Android监听安装卸载
- html js css如何关联_html+css +js 选项卡
- python内建函数是什么意思_Python3内建函数简介,Python3内建函数详解
- centos配置单网卡双IP
- 5.14 js对象 函数 js操作document对象
- PHP字符串运算结果,PHP 实现后缀表达式(接受四则运算字符串,输出计算结果,附代码)...
- 2021凯络趋势报告
- java 反射data类型_java反射机制系列之初识Java Reflection
- python使用pip安装_Python pip 安装与使用
- 计算机手动双面打印,记得要收藏 如何手动完成双面打印文档
- python 吃cpu 显卡 内存_浅析 Pycharm 内存、cpu 占用率
- •检查你的代理设置127.0.0.1:2****。 转到“工具”“Internet 选项”“连接”。如果你在 LAN 中,请单击“局域网设置”。
- Kinect_人脸识别
- 【转载】Red Hat Enterprise Linux ISO 45678版本镜像下载【网盘资源】
- ASCII美国信息交换标准代码表
- html2d动画,HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
- 小程序源码:独家全新娱乐性超高的喝酒神器-多玩法安装简单
- 前后端处理实时刷新refresh_token的使用
热门文章
- 华为防火墙USG6000通过WEB图形界面配置案例
- 可以翻译ppt文档的软件有哪些?
- 怎么在电脑上看磁盘分配单元的大小_Win10系统如何磁盘分区,今天小黑来教你,看完涨知识了!...
- 批处理一键安装所有离线的Python库
- MasterAlign对位贴合系统——特殊对位应用
- 利用百度地图api显示北京某区电影院
- 火狐浏览器Firefox如何导出导入书签页
- 宕机超 12 小时,损失过亿,唯品会基础平台负责人被“祭天”
- 引进RFID仓库管理系统解决方案,究竟能给企业仓库管理带来什么优势呢-新导智能
- 坦克大战小游戏关键技术总结