Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何测试这个方法--性能篇

如何测试这个方法--性能篇

作者头像
FunTester
发布于 2019-12-17 02:56:57
发布于 2019-12-17 02:56:57
65200
代码可运行
举报
文章被收录于专栏:FunTesterFunTester
运行总次数:0
代码可运行

本文题目来自于知识星球,后台回复“知识星球”可参与问答。

书接上回,继续说说这个生成唯一订单号的方法,这次来讲讲性能问题。先贴原始代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 /**
     * 生产唯一的交易订单号
     *
     * @return
     */
    public static String createUniqueOrderNo() {
        SimpleDateFormat nyrsfm = new SimpleDateFormat("yyyyMMddHHmmss");
        return nyrsfm.format(new Date()) + getRandomLengthCode(4);
    }


    /**
     * 获取随机的短信验证码
     *
     * @return
     */
    public static String getRandomLengthCode(int length) {
        return String.valueOf((int) ((Math.random() * 9 + 1) * Math.pow(10, length - 1)));
    }

首先来看第一个方法,第一眼看过去,发现一个问题:该类是一个工具类,方法都是静态的。在第一个方法中,SimpleDateFormat对象每次调用的时候都会创建,而且是一样的对象,这里既浪费内存又浪费CPU,总体来讲浪费时间。修改如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  static SimpleDateFormat nyrsfm = new SimpleDateFormat("yyyyMMddHHmmss");

    /**
     * 生产唯一的交易订单号
     *
     * @return
     */
    public static String createUniqueOrderNo() {
        return nyrsfm.format(new Date()) + getRandomLengthCode(4);
    }

测试代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        long nanoMark = getNanoMark();
        range(10000).forEach(x ->
        {
            createUniqueOrderNo();
        });
        output(getFormatNumber(getNanoMark() - nanoMark));
    }

这是测试结果:

可以很明显看出来,修改过之后的方法的确快了很多。

下面再研究一下获取时间的方法,暂时也没找到太好的办法,暂且忽略了。下面看看第二个方法,获取随机四位数的,首先对于int转成string还有一种方法就是直接使用+连接,下面是测试代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        long nanoMark = getNanoMark();
        range(100000).forEach(x ->
        {
//            String ss = String.valueOf(1211);
            String ss = 1121 + "";
        });
        output(getFormatNumber(getNanoMark() - nanoMark));
    }

这是测试结果:

差别并不是很大,查阅资料显示用+连接的会多创建对象,占用更多内容资源。所以使用valueof()方法也许会更合适一些。经过一些尝试,发现第二个方法没啥可以优化的。性能方面的暂且如此吧。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c语言从入门到实战——C语言数据类型和变量
本文基于VS2022,将介绍一系列的C语言数据类型和变量,让读者对C语言有一个初步的了解,并对后续的学习做下铺垫。
鲜于言悠
2024/03/20
3880
c语言从入门到实战——C语言数据类型和变量
C语言基础语法
风中的云彩
2024/11/07
1730
初识C语言(下)
本章内容为初始C语言下半部分,将一些C语言的常见概念进行阐述并不会深层次的探究,后续会深入讲解C语言的,适合初学者能够初步认识到C语言及其常见的概念。高校教育较为注重素质教育和现在的公司需求还是有一定的差距,这篇文章可以为初学C语言的初学者们提供参考,如果你对C语言的整体知识不太了解,可以读一读笔者的文章,带你零基础学透C语言。
四念处茫茫
2025/01/25
1480
初识C语言(下)
C语言——B/数据类型和变量
自定义类型包括:数组、结构体(struct)、枚举(enum)、联合体(union)。
用户11015888
2024/03/11
2760
C语言——B/数据类型和变量
初识C语言·2
signed和unsigned都是C语言中的关键字,它们的作用是决定字符或者整型的正负号。
_lazy
2024/10/16
2050
初识C语言·2
第2讲:C语言数据类型和变量
使用 整型类型来描述整数,使用 字符类型来描述字符,使用 浮点型类型来描述小数。
用户11290648
2024/09/25
3210
第2讲:C语言数据类型和变量
关于我、重生到500年前凭借C语言改变世界科技vlog.2——C语言数据类型和变量
C语言的数据类型多种多样,类型不仅是我们了解数据的开始,也是数据初始化、函数自定义等的操作,编译器只有知道了数据的类型,才能进行相应的操作
DARLING Zero two
2024/11/19
1120
关于我、重生到500年前凭借C语言改变世界科技vlog.2——C语言数据类型和变量
c语言中数据类型和变量
char是否有符号取决于编译器的实现,大部分的编译器上 char = signed char
Undoom
2024/09/23
1470
C语言基础
“知己知彼,百战百胜”,大学计算机专业接触的第一门专业课就是C语言,那么什么是C语言呢?人和人之间可以用汉语、英语进行交流,那人和计算机之间应该如何交流呢?这个时候就需要计算机语言。C语言就是常见的计算机语言中的一种,还有Java、C++等计算机语言。
用户11352420
2024/11/07
1870
C语言基础
【C语言】数据类型和变量
C语言提供了丰富的数据类型来描述生活中的各种数据。使用整型类型来描述整数,使用字符类型来描述字符,使用浮点型类型来描述小数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
zxctscl
2024/09/24
2520
【C语言】数据类型和变量
【C语言】数据类型与变量
C语言原来并没有为布尔值单独设置一个类型,而是使用整数 0 表示假,非 0 表示真。
云边有个稻草人
2024/10/21
1760
【C语言】数据类型与变量
完全入门C语言
C语言是一门通用的计算机编程语言,广泛应用于底层开发。其设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。有良好的跨平台的特性。 同时C语言还是面向过程的编程语言,这与JAVA C++等面向对象的编程语言有所不同。 目前主流的C语言编译器有:GCC Clang MVSVC等
Yui_
2024/10/15
2850
完全入门C语言
C语言:基础知识
通常,我们使用英语、中文等语言来进行两个人之间的交流。这意味着当我们想要和他人进行交流时,我们需要一种语言来表达自己的感受。同样的,当我们想要和计算机进行交流时,我们也需要一种语言,可以通过该语言向计算机提供信息,传达指令,我们称该语言为计算机语言。
小陈在拼命
2024/02/17
4090
C语言:基础知识
C语言的数据类型和变量-学习笔记
今天上课时,老师和我们说学习编程和代码是为了解决未来生活中的问题,写出的代码是为了能够描述现实世界。欧克,接下来将和大家一起学习C语言相关知识。希望对大家能够有所帮助!!!
LonlyMay
2024/10/21
1210
C语言的数据类型和变量-学习笔记
C语言——A/概念
这是我挖的新坑系列之《C语言的学习》,用来记录学习C语言的过程,以后星期五上传一篇文章,欢迎铁汁来喷!!!
用户11015888
2024/03/11
1770
C语言笔记---(2)基本语法
这里有一个主函数,主函数他是必不可少的,一个C程序有且只有一个主函数,即main函数。在最新的C标准中,main函数前的类型为int而不是void。
是小北a
2022/03/28
1K0
C语言笔记---(2)基本语法
轻松拿捏C语言——数据类型和变量
在C语言中含有许多丰富的数据类型,比如用整形类型来描述整数,用浮点类型来描述小数,用字符型来描述字符。
用户11162265
2024/06/14
1660
轻松拿捏C语言——数据类型和变量
【C语言】数据类型和变量
布尔类型的使⽤得包含头⽂件 <stdbool.h> 布尔类型变量的取值是:true或者false.
大耳朵土土垚
2024/03/13
1280
【C语言】数据类型和变量
【C】 C语言入门
如果觉的博主的文章还不错的话,还请点赞,收藏,关注支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。
阿伟@t
2023/10/10
1.3K0
【C】 C语言入门
【C生万物】C语言数据类型、变量和运算符
C语言提供了了丰富的数据类型来描述生活中的各种数据。 C语言提供的一下数据类型:
爱敲代码的小杨.
2024/05/07
1960
【C生万物】C语言数据类型、变量和运算符
相关推荐
c语言从入门到实战——C语言数据类型和变量
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验