joda-time 日常使用效率测试

joda-time 日常使用效率测试

 

joda time官网地址:http://joda-time.sourceforge.net/

 

最近项目上引进joda-time.jar,进行日期类处理,使用方便,灵活。

抱着怀疑的态度做了一个简单的基本使用测试,用数据来证明一切。

 

测试环境:

JDK:sun JDK 1.6.31

joda-time.jar: joda-time-2.1.jar

机器系统:xp

开发软件:eclipse3.7.2

 

直接代码说话

 

 

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.joda.time.DateTime;

public final class Test {

	private Test() {
	}

	/**
	 * <B>测试jodatime日期处理效率</B><br>
	 * 
	 * @author liujinxin
	 * @param preheatCount
	 *            预热次数
	 * @param runCount
	 *            运行次数
	 */
	private static void testJoda(int preheatCount, int runCount) {
		// 预热代码
		for (int i = 0; i < preheatCount; i++) {
			new DateTime();
		}
		// 测试部分
		final long start = System.currentTimeMillis();
		for (int i = 0; i < runCount; i++) {
			final DateTime dateTime = new DateTime();
			// 测试日期修改
			// new DateTime().plusHours(1);
			// 测试日期格式化
			dateTime.toString("yyyy-MM-dd HH");

		}
		final long end = System.currentTimeMillis();
		System.out.println(end - start);
	}

	/**
	 * <B>测试JDK日期处理效率</B><br>
	 * 
	 * @author liujinxin
	 * @param preheatCount
	 *            预热次数
	 * @param runCount
	 *            运行次数
	 */
	private static void testCalendar(int preheatCount, int runCount) {
		// 预热代码
		for (int i = 0; i < preheatCount; i++) {
			Calendar.getInstance();
		}
		// 测试部分
		final long start1 = System.currentTimeMillis();
		for (int i = 0; i < runCount; i++) {
			// 测试日期修改
			// Calendar.getInstance().add(Calendar.HOUR, 1);
			// 测试日期格式化
			final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
			simpleDateFormat.format(new Date());
		}
		final long end1 = System.currentTimeMillis();
		System.out.println(end1 - start1);
	}

	public static void main(String[] args) {
		final int preheatCount = 0;
		final int runCount = 100000;
		// 分别单独运行两个测试方法
		// testJoda(init, runCount);
		testCalendar(preheatCount, runCount);
	}
}

 

测试具体数据就不贴出来了(别骂我,每个机器都不大一样,自己跑一下,很快的),

结论:

jodatime在预热10000次后 运行效率远高于JDK自带的Calendar。

但是未预热时,运行次数小于1000时,JDK自带的Calendar稍快一些。

一般系统对于时间的处理都会大于1000次,大型一点的系统一般都有预热程序。

 

分析:

sun的jvm的实现,会将运行到一定次数的代码进行本地化编译,进行本地化编译后效率大大提高。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值