SimpleDateFormat性能优化
每一次时间格式化的时候都会去手动new SimpleDateFormat,每一次new都是一次较大的性能开销,因此想到的是用static的形式来提高性能。由于SimpleDateFormat是线程不安全的,因此可以借助ThredLocal来实现线程安全。
代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateFormatUtil {/*** 日期格式*/private static final String DATE_FORMAT = "yyyy-MM-dd";/*** 日期时间格式*/private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";/*** 初始化日期格式的simpleDateFormat*/private static final ThreadLocal<SimpleDateFormat> DATE = new ThreadLocal<SimpleDateFormat>() {@Overrideprotected synchronized SimpleDateFormat initialValue() {return new SimpleDateFormat(DATE_FORMAT);}};/*** 初始化日期时间格式的SimpleDateFormat*/private static final ThreadLocal<SimpleDateFormat> DATE_TIME = new ThreadLocal<SimpleDateFormat>() {@Overrideprotected synchronized SimpleDateFormat initialValue() {return new SimpleDateFormat(DATE_TIME_FORMAT);}};/*** 将日期格式化为字符串** @param date Date类型的日期* @return 格式化后的字符串日期*/public static String formatDate(Date date) {return getDateFormat().format(date);}/*** 将日期时间格式化为字符串** @param date Date类型的日期* @return 格式化后的字符串日期*/public static String formatDateTime(Date date) {return getDateTimeFormat().format(date);}/*** 将字符串格式化为日期** @param date 字符串日期* @return Date类型的日期*/public static Date parseDate(String date) {try {return getDateFormat().parse(date);} catch (ParseException e) {e.printStackTrace();}return null;}/*** 将字符串格式化为日期时间** @param date 字符串日期* @return Date类型的日期*/public static Date parseDateTime(String date) {try {return getDateTimeFormat().parse(date);} catch (ParseException e) {e.printStackTrace();}return null;}private static SimpleDateFormat getDateFormat() {return DATE.get();}private static SimpleDateFormat getDateTimeFormat() {return DATE_TIME.get();}}
测试100万,500万,1000万循环不断的format时间测试性能:
public static void main(String[] args) {long start = System.currentTimeMillis();for (int i = 0; i < count; i++) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DateFormatUtil.DATE_TIME_FORMAT);simpleDateFormat.format(new Date());}long end = System.currentTimeMillis();System.out.println("new SimpleDateFormat耗时:" + (end - start));//测试DateFormatUtillong start2 = System.currentTimeMillis();for (int i = 0; i < count; i++) {DateFormatUtil.formatDateTime(new Date());}long end2 = System.currentTimeMillis();System.out.println("DateFormatUtil耗时:" + (end2 - start2));
}
100万的时候
new数据的方式 ,耗时: 2841、2470 、2672
ThreadLocal的方式,耗时:1286、1236、1362
500万的时候
new数据的方式 ,耗时: 7566、7445 、7537
ThreadLocal的方式,耗时:4165、4282、4122
100万的时候
new数据的方式 ,耗时: 12818、13513
ThreadLocal的方式,耗时:6038、6002
性能是有所提升的。
SimpleDateFormat性能优化相关推荐
- Hibernate查询性能优化技巧
数据库查询性能的提升也是涉及到开发中的各个阶段,在开发中选用正确的查询方法无疑是最基础也最简单的. SQL语句的优化 使用正确的SQL语句可以在很大程度上提高系统的查询性能.获得同样数据而采用不同方式 ...
- ps图片黑白调整算法——java实现及性能优化
参考: http://blog.csdn.net/matrix_space/article/details/22992833 http://blog.csdn.net/majinlei121/arti ...
- 拉勾教育 | Java 性能优化实战 21 讲
开篇词 开篇词 | Java 性能优化,是进阶高级架构师的炼金石 你好,我是李国.作为<Java 性能优化与面试 21 讲>这个课程的作者,我先来简单介绍下自己. 我曾任京东金融.陌陌科技 ...
- kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势
陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...
- MegEngine推理性能优化
MegEngine推理性能优化 MegEngine「训练推理一体化」的独特范式,通过静态图优化保证模型精度与训练时一致,无缝导入推理侧,再借助工业验证的高效卷积优化技术,打造深度学习推理侧极致加速方案 ...
- asp.net程序性能优化的七个方面
asp.net程序性能优化的七个方面 一.数据库操作 1.用完马上关闭数据库连接 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器 ...
- java criteria限制条数_java架构—Oracle SQL性能优化
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先 ...
- ab测试nginx Nginx性能优化
转自:https://www.cnblogs.com/nulige/p/9369700.html 1.性能优化概述 在做性能优化前, 我们需要对如下进行考虑 1.当前系统结构瓶颈 观察指标 压力测试 ...
- RHEL/CentOS通用性能优化、安全配置参考
RHEL/CentOS通用性能优化.安全配置参考 本文的配置参数是笔者在实际生产环境中反复实践总结的结果,完全适用绝大多数通用的高负载.安全性要求的网络服务器环境.故可以放心使用. 若有异议,欢迎联系 ...
最新文章
- [15]APUE:pipe / FIFO
- AsyncDisplayKit
- 为什么CRM Opportunity的删除会触发一个通向BW系统的RFC
- 单行、多行文本超出显示省略号
- linux远程仿真,11.5 仿真的远程桌面系统: XRDP 服务器
- mysql数据库中实现内连接、左连接、右连接
- Java EE实战教程 servlet (一)
- 派生类构造的时候一定要调用_分手的时候,一定要好好说再见
- 翻山越岭上uvaoj
- Python新闻网站项目-9.Django前端HTML功能
- 视频教程-java后台+微信小程序 实现完整的点餐系统-微信开发
- 4k hidpi 黑苹果_黑苹果如何通过开启HIDPI来增强显示效果?
- 基于halcon的颜色识别---杜邦线识别
- Excel如何生成11位随机数,包含大小写字母和数字
- 内存超频对游戏提升大吗 玩游戏有必要超频吗
- arcgis js(二)显示三维地图
- android 摄像头黑屏,5+app 安卓调用摄像头黑屏 苹果可以
- 基于人工智能的盲人阅读器
- kubesphere K8S Kubeedge 安装配置菜鸟级指导
- 【汇编】微机原理与接口技术课程设计