JAVA日期时间类创建解析速度测试


前言

测试一下各时间类的性能, 做到心中有数
环境: AMD4800H 64G OpenJDK15 Junit4.13.2


测试代码

public class 日期时间类创建解析速度测试 {
	
	long totalAmount001 = 10_000_000L;
	
	void p(Object o) {System.out.println(o);}
	
	@Test public void testSystemCurrentTimeMillisSpeed() {
		long v=0;
		for(long i=0; i<totalAmount001; i++) {		v = System.currentTimeMillis();		}		p(v);
	}
	
	@Test public void testInstantNowSpeed() {
		Instant instant = null;
		for(long i=0; i<totalAmount001; i++) {			instant = Instant.now();		}		p(instant);
	}
	@Test public void testLocalDateNowSpeed() {
		LocalDate localDate = null;
		for(long i=0; i<totalAmount001; i++) {			localDate = LocalDate.now();		}
		System.out.println(localDate);
	}
	@Test public void testLocalTimeNowSpeed() {
		LocalTime localTime = null;
		for(long i=0; i<totalAmount001; i++) {localTime=LocalTime.now();}
		System.out.println(localTime);
	}
	@Test public void testLocalDateTimeNowSpeed() {
		LocalDateTime localDateTime = null;
		for(long l=0; l<totalAmount001; l++) {localDateTime=LocalDateTime.now();}
		System.out.println(localDateTime);
	}
	@Test public void testLocalDateTimeOfIntSpeed() {
		LocalDateTime localDateTime = null;
		for(long l=0; l<totalAmount001; l++) {localDateTime=LocalDateTime.of(2021, 4, 4, 8, 0, 0);}
		System.out.println(localDateTime);
	}
	@Test public void testLocalDateTimeOfIntegerValueOfStringSpeed() {
		LocalDateTime localDateTime = null;
		for(long l=0; l<totalAmount001; l++) {
			localDateTime=LocalDateTime.of(
					Integer.valueOf("2021"), Integer.valueOf("4"), Integer.valueOf("5")
					, Integer.valueOf("0"), Integer.valueOf("0"), Integer.valueOf("0")
					);
			}
		System.out.println(localDateTime);
	}
	@Test public void testLocalDateTimeParseStringSpeed() {
		LocalDateTime localDateTime = null;
		for(long l=0; l<totalAmount001; l++) {localDateTime=LocalDateTime.parse("2021-04-04T08:08:08");}
		System.out.println(localDateTime);
	}
	@Test public void testNewUtilDateSpeed() {
		java.util.Date utilDate = null;
		for(long l=0; l<totalAmount001; l++) {utilDate=new java.util.Date();}
		System.out.println(utilDate);
	}
	@Test public void testNewTimestampLongSpeed() {
		Timestamp timestamp = null;
		for(long l=0; l<totalAmount001; l++) {timestamp=new Timestamp(0);}		p(timestamp);
	}
	@Test public void testNewTimestampSystemCurrenttTimeMillisSpeed() {
		Timestamp timestamp = null;
		for(long l=0; l<totalAmount001; l++) {timestamp=new Timestamp(System.currentTimeMillis());}		p(timestamp);
	}
	@Test public void testTimestampValueOfStringSpeed() {
		Timestamp timestamp = null;
		for(long l=0; l<totalAmount001; l++) {timestamp=Timestamp.valueOf("2021-04-05 01:18:18");}
		p(timestamp);
	}

}

结果截图

测试结果耗时截图


总结

  • System.currentTimeMillis() 比 Instant.now() 快3倍
  • new Date() 比 LocalDateTime.now() 快10倍
  • LocalDateTime.of(int , int …)速度还是挺快的
  • LocalDateTime.now()比LocalDateTime.of(int)慢了近50倍
  • LocalDateTime.parse(字符串)比LocalDateTime.now() 还慢20倍
  • LocalDateTime.parse(“2021-04-05T00:00:00”)中间的 T 不能少
  • 用官方方式解析字符串获得时间真的很慢
    Timestamp.valueOf(String)比 new Timestamp(long) 慢60倍
    LocalDateTime.parse(String)比LocalDateTime.of(int,int…)慢800倍
    LocalDateTime.parse(String)比Timestamp.valueOf(String)慢6倍
    LocalDateTime.of(
    Integer.valueOf(“2021”), Integer.valueOf(“4”), Integer.valueOf(“4”)
    , Integer.valueOf(“8”), Integer.valueOf(“8”), Integer.valueOf(“8”)
    );

    LocalDateTime.parse(“2021-04-04T08:08:08”)
    快 200倍!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kfepiza

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值