首页
登录 | 注册

几种toString的性能比较

背景

最近要写一个批量的接口,由于一次请求的量比较大,所以很多小的点不得不好好考虑性能。一个object的toString操作,也是一个性能考虑点,故自己做了一个测试,比较了一下可能的几种toString的方式。

    public static void main(String[] args){
        SingleConsignOrder singleConsignOrder = new SingleConsignOrder();
        Long startTime = System.currentTimeMillis();
        for(int i = 0; i < 1000; ++i){
            SerializationUtils.serialization(singleConsignOrder);
        }
        Long endTime = System.currentTimeMillis();
        System.out.println("SerializationUtils.serialization:"+(endTime-startTime));
        for(int i = 0; i < 1000; ++i){
            JSON.toJSONString(singleConsignOrder);
        }
        startTime = System.currentTimeMillis();
        System.out.println("JSON.toJSONString:"+(startTime-endTime));
        for(int i = 0; i < 1000; ++i){
            singleConsignOrder.toString();
        }
        endTime = System.currentTimeMillis();
        System.out.println("singleConsignOrder.toString:"+(endTime-startTime));
        for(int i = 0; i < 1000; ++i){
            ToStringBuilder.reflectionToString(singleConsignOrder);
        }
        startTime = System.currentTimeMillis();
        System.out.println("ToStringBuilder.reflectionToString:"+(startTime-endTime));
        for(int i = 0; i < 1000; ++i){
            JSON.toJSONBytes(singleConsignOrder);
        }
        endTime = System.currentTimeMillis();
        System.out.println("JSON.toJSONBytes:"+(endTime-startTime));
    }

结果

SerializationUtils.serialization:572
JSON.toJSONString:23
singleConsignOrder.toString:10
ToStringBuilder.reflectionToString:93
JSON.toJSONBytes:42

object自带的string速度最快,但是这个自带的toString方法如果不重写,可能达不到想要的效果(有可能打印出来的只是一个内存地址)。所以选择JSON.toJSONString还是不错的,并且操作是幂等的。


相关文章

  • 前端基础---JS基础
    背景介绍 Javascript 是一种运行在客户端的脚本语言 应用场景: 1.网页特效 2.服务端开发(Node.js) 3.命令行工具(Node.js) 4.桌面程序(Elextron) 5.APP(Cordova) 6.控制硬件-物联网 ...
  • 一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!
    本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者--泽林提供,部分答案由Hollis整理自知识星球<Hollis和他的朋友们>中「直面Java」板块. 经历了漫长一个月的 ...
  • 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点
    为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑--阿里巴巴资深技术专家们结合多年的工作.面试经验总结提炼而成的面试真题这一次将陆续放出(面试题官方参考答案将在专辑结束后统一汇总分享,点此进入答题并围观他人答案).并通 ...
  • 阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?
    面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明.发现一个好工作不容易,但成功应聘又会面临一系列的挑战. 为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑--阿里巴巴资深技术专家们结合多年的工作.面试经 ...
  • 阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?
    轻松筹首创了"大病救助"模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题.而在轻松筹这样全球5.5亿用户信赖的大病筹款平台的背后,是日益增长的各种数据.面对这样数据量所造成的巨大挑战,阿里 ...
  • 提升不止一点点,Dubbo 3.0 预览版详细解读
    Dubbo 自 2011 年 10 月 27 日开源后,已被许多非阿里系的公司使用,其中既有当当网.网易考拉等互联网公司,也不乏中国人寿.青岛海尔等大型传统企业.更多用户信息,可以访问Dubbo @GitHub,issue#1012: Wa ...

2020 jeepshoe.net webmaster#jeepshoe.net
13 q. 0.286 s.
京ICP备10005923号