记一次后台存储方案优化
2016-10-26 14:58
281 查看
序列化方案
Jsonprotobuf
JDK Serializable
测试方法
String line = "{很复杂的json,需要保密}"; DataStructure d = json.fromJson(line, DataStructure.class); long time = System.currentTimeMillis(); long size = 0; for(int i = 0;i< 1000000; i++){ d.setCostTime(i); String b = json.toJson(d); size = size + b.getBytes().length; } System.out.println("time :" + (System.currentTimeMillis() - time) +",and size:" + size);
测试结果
序列化:方式 | 耗时(毫秒) | 结构化存储数据大小(byte) |
---|---|---|
json | 8954 | 777888890 |
protobuf2 | 5255 | 517983488 |
protobuf3 | 3247 | 357983488 |
jdk | 7281 | 1067000000 |
方式 | 耗时(毫秒) |
---|---|
json | 5107 |
protobuf2 | 4082 |
protobuf3 | 3123 |
jdk | 22779 |
插曲
测试过程种出现过一次异常:序列化:
方式 | 耗时(毫秒) | 结构化存储数据大小(byte) |
---|---|---|
protobuf2 | 28653 | 517983488 |
protobuf3 | 25878 | 357983488 |
方式 | 耗时(毫秒) |
---|---|
protobuf3 | 22779 |
Class<? extends DataStructure> clazz = DataStructure.class; Field[] fields = clazz.getDeclaredFields(); for(Field field : fields){ String name = field.getName(); String up = captureName(name); if(field.getAnnotation(SerializableTag.class) != null) //填入数据 }
这段代码导致速度下降了6~8倍
总结
protobuf 性能全面优于 Json,速度加快大概在30%~40% 左右,存储数据量下降30%+由于项目中的 Java Object 带Map属性在使用支持Map的 protobuf 3.0 时,性能还能有大幅提升 (目前spark 只支持2.5 Map 使用jdk序列化,再以byte方式序列化到pb)
线上环境全面使用 set,get 方法替代反射注入,提升性能(不要怕麻烦)。
相关文章推荐
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- android sdcard存储方案优化(基于wrapfs文件系统):之三
- 数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(二)
- OpenStack Ceilometer -- 后台数据存储优化之MongoDB的分片存储设置
- 数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(三)
- APP开发实战175-针对Android7.0及更高版本的后台优化方案
- Lua配置表存储优化方案
- 如何让压力测试产生平稳的机器人曲线——压测后台的一次优化历程
- 案例分析:无锡移动采用“戴尔虚拟化方案+EqualLogic™存储+ICS服务”优化IT系统
- 数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(一)
- 存储过程、函数、触发器、优化方案
- 如何让压力测试产生平稳的机器人曲线——压测后台的一次优化历程
- MySql的优化方案,从存储原理结构到开发角度
- 转:海量数据库的查询优化及分页算法方案
- 一次SQL分页的优化
- C++ 存储方案
- 数据库优化方案
- 海量数据库的查询优化及分页算法方案
- cocos 优化方案
- 关于ListView的优化方案