`

SimpleDateFormat和FastDateFormat的效率测试,FastDateFormatr优于SimpleDateFormat

    博客分类:
  • Java
 
阅读更多

需要引入commons-lang包,Maven配置如下:

 

 <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

 

 

测试代码如下:

importorg.apache.commons.lang3.time.FastDateFormat;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * Discribe:日期工具类
 * Date:  2016/5/13
 * Time: .19:05
 */
public class FastDateFormaTest {

    /*patten*/
public final static String PATTEN_YEAR = "yyyy" ;
    public final static String PATTEN_YEAR_MM = "yyyy-MM" ;
    public final static String PATTEN_YEAR_MM_DD = "yyyy-MM-dd" ;
    public final static String PATTEN_YEAR_MM_DD_HH = "yyyy-MM-dd HH" ;
    public final static String PATTEN_YEAR_MM_DD_HH_MM = "yyyy-MM-dd HH:mm" ;
    public final static String PATTEN_YEAR_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss" ;
    public final static String PATTEN_YEAR_MM_DD_HH_MM_SS_MS = "yyyy-MM-dd HH:mm:ss:ms" ;

    public static  void main(String[] args)  {
       /**
         * 测试10次
         */
        /*for(int i=1;i<=10;i++){
            testDateFormat(i);
        }*/
Date date = new Date();
        System.out.println(dateToString(date,PATTEN_YEAR));
        System.out.println(dateToString(date,PATTEN_YEAR_MM));
        System.out.println(dateToString(date,PATTEN_YEAR_MM_DD));
        System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH));
        System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH_MM));
        System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH_MM_SS));
        System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH_MM_SS_MS));
    }

    /**
     * 指定日期及需输出格式,返回格式化后的字符串
     * @param date
* @param patten
* @return
*/
public final static String dateToString(Date date,String patten) {
        FastDateFormat fastDateFormat = FastDateFormat.getInstance(patten);
        return fastDateFormat.format(date);
    }



    /**
     *  testDateFormat
     */
public static void testDateFormat(int num){
        System.out.println("执行第"+num+"次");
        int cont = 200000;

        long l1 = System.currentTimeMillis();
        for(int i=0;i<=cont;i++){
            SimpleDateFormat s = new SimpleDateFormat(PATTEN_YEAR_MM_DD_HH_MM_SS);
            Date date = new Date();
            String string = s.format(date);

        }
        long l2 =  System.currentTimeMillis();
        System.out.println("SimpleDateFormat covert time:"+(l2-l1));

        for(int i=0;i<=cont;i++){
            FastDateFormat s = FastDateFormat.getInstance(PATTEN_YEAR_MM_DD_HH_MM_SS);
            Date date = new Date();
            String string = s.format(date);
            //System.out.println(string);
}
        long l3 =  System.currentTimeMillis();
        System.out.println("FastDateFormat covert time:"+(l3-l2));

    }
}

 

多次运行结果如下:

 

执行第1次
SimpleDateFormat covert time:1183
FastDateFormat covert time:441
执行第2次
SimpleDateFormat covert time:566
FastDateFormat covert time:155
执行第3次
SimpleDateFormat covert time:322
FastDateFormat covert time:132
执行第4次
SimpleDateFormat covert time:323
FastDateFormat covert time:140
执行第5次
SimpleDateFormat covert time:331
FastDateFormat covert time:130
执行第6次
SimpleDateFormat covert time:292
FastDateFormat covert time:93
执行第7次
SimpleDateFormat covert time:245
FastDateFormat covert time:96
执行第8次
SimpleDateFormat covert time:249
FastDateFormat covert time:98
执行第9次
SimpleDateFormat covert time:246
FastDateFormat covert time:98
执行第10次
SimpleDateFormat covert time:242
FastDateFormat covert time:103

 从运行结果来看,FastDateFormat效率明 SimpleDateFormat 

 

分享到:
评论

相关推荐

    高并发之-SimpleDateFormat类的线程安全问题和解决方案.docx

    SimpleDateFormat类的线程安全问题和解决方案 SimpleDateFormat类的线程安全问题 SimpleDateFormat类是Java提供的日期时间转化类,用于将日期和时间类型的数据进行解析和格式化。在Java开发中,SimpleDateFormat类...

    JavaScript实现的SimpleDateFormat

    在JavaScript中,没有内置的`SimpleDateFormat`类,它是一个Java中的类,用于日期和时间的格式化。然而,由于JavaScript在处理日期时的功能相对有限,开发者常常需要自定义函数或者使用第三方库来实现类似的功能。这...

    SimpleDateFormat使用详解

    SimpleDateFormat 允许用户以各种方式格式化日期和时间,例如以年、月、日、时、分、秒等不同的格式来表示日期和时间。 SimpleDateFormat 的继承关系是:java.lang.Object -&gt; java.text.Format -&gt; java.text....

    深入理解Java:SimpleDateFormat安全的时间格式化

    但是,如果使用不小心会导致非常微妙和难以调试的问题,因为DateFormat和SimpleDateFormat类不是线程安全的。在多线程环境下调用format()和parse()方法应该使用同步代码来避免问题。 知识点1: SimpleDateFormat的非...

    由浅入深解析 SimpleDateFormat

    SimpleDateFormat 是 Java 语言中的一种日期和时间格式化类,用于将日期和时间格式化为字符串或将字符串解析为日期和时间。它是 DateFormat 的子类,继承自 java.text.Format。 SimpleDateFormat 的继承关系 ...

    有关SimpleDateFormat的常用方法说明

    - 在使用`SimpleDateFormat`时,需要注意日期和时间的格式是否符合预期,特别是在国际化应用中,不同的地区可能会有不同的日期和时间格式习惯。 - `SimpleDateFormat`是线程不安全的,如果在多线程环境中使用,需要...

    java SimpleDateFormat &Calendar

    在Java编程语言中,`SimpleDateFormat`和`Calendar`是两个重要的日期和时间处理类,它们在处理日期格式化、解析以及日期计算方面扮演着重要角色。本文将深入探讨这两个类的功能、用法以及它们之间的关系。 `...

    java 使用SimpleDateFormat类获取系统的当前时间

    在Java编程语言中,`SimpleDateFormat` 是一个非常重要的日期和时间格式化工具类,它允许程序员以特定的模式来解析和格式化日期。当我们需要从系统获取当前时间并按照自定义格式显示时,`SimpleDateFormat` 就派上了...

    java SimpleDateFormat 显示于系统时间不符

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); date.setTime(time); System.out.println(sdf.format(date)); 发现时间于想要的时间不符,请运行Time.reg文件

    simpleDateFormat是线程不安全的

    1. **内部状态可变**:`SimpleDateFormat`内部维护了一些可变的状态,如解析和格式化日期时使用的日期字段和格式模板。当一个线程正在修改这些状态时,另一个线程可能也在尝试访问,导致数据竞争和不一致。 2. **...

    SimpleDateFormat格式化日期

    日期操作。。。基础的SimpleDateFormat格式化日期!!操作!》初级学习代码

    ThreadLocal:如何优雅的解决SimpleDateFormat多线程安全问题

    目录SimpleDateFormat诡异bug复现SimpleDateFormat诡异bug字符串日期转Date日期(parse)Date日期转String类型(format)SimpleDateFormat出现bug的原因如何解决SimpleDateFormat多线程安全问题局部变量使用...

    SimpleDateFormat线程不安全的5种解决方案.docx

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss"); // 创建时间对象 Date date = new Date(finalI * 1000); // 执行时间格式化并打印结果 System.out.println(simpleDateFormat.format(date...

    创建SimpleDateFormat对象,确定日期被格式化的格式.txt

    1.创建SimpleDateFormat对象,确定日期被格式化的格式 2.使用循环,在循环中调用Thread的sleep方法,让线程休眠1s后打印当前时间的字符串

    Java多线程环境下SimpleDateFormat类安全转换

    通过使用ThreadLocal类和synchronized关键字,我们可以避免线程安全问题,并确保SimpleDateFormat类的安全转换。在实际应用中,我们需要根据实际情况选择合适的解决方案,以确保SimpleDateFormat类的安全转换。

    Java 实例 - 格式化时间SimpleDateFormat使用源代码-详细教程.zip

    在Java编程语言中,`SimpleDateFormat`是日期和时间格式化的关键工具,它允许程序员将日期和时间对象转换为字符串,以及将字符串解析回日期对象。这个详细教程将引导你了解如何有效地使用`SimpleDateFormat`类。以下...

    关于SimpleDateFormat的非线程安全问题及其解决方案.docx

    ### 关于SimpleDateFormat的非线程安全问题及其解决方案 #### 一、问题介绍 在Java开发过程中,`...通过以上措施,可以有效地解决`SimpleDateFormat`在多线程环境下的非线程安全问题,提高程序的稳定性和可靠性。

    Java中的SimpleDateFormat使用详解

    在Java编程语言中,`SimpleDateFormat`是`java.text.DateFormat`类的一个具体实现,它用于以国际化的方式对日期和时间进行格式化和解析。这个类提供了丰富的功能,允许程序员自定义日期时间的显示格式,从而满足不同...

    JAVA使用SimpleDateFormat类表示时间代码实例

    JAVA 中的日期和时间处理可以使用 Date 类和 SimpleDateFormat 类来实现,通过 format() 方法和 parse() 方法可以实现日期和文本之间的转换。 在实际开发中,我们可以根据需要选择不同的日期格式和解析方式,例如...

Global site tag (gtag.js) - Google Analytics