您的位置:首页 > 其它

joda-time 日常使用效率测试

2016-05-25 00:00 375 查看
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

直接代码说话

Java代码

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的实现,会将运行到一定次数的代码进行本地化编译,进行本地化编译后效率大大提高。
本文出自 “AUB” 博客,请务必保留此出处http://aubdiy.blog.51cto.com/2978849/1119689
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  joda joda-time jodatime