首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >calendar.getInstance()或calendar.clone()

calendar.getInstance()或calendar.clone()
EN

Stack Overflow用户
提问于 2010-04-08 04:19:20
回答 5查看 48.9K关注 0票数 35

我需要将一个给定的日期复制100次(我不能通过引用传递)。我想知道下面两个选项中哪一个更好

代码语言:javascript
复制
newTime=Calendar.getInstance().setTime(originalDate);

代码语言:javascript
复制
newTime=originalDate.clone();

性能是这里的主要内容。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-08 04:24:22

我会用

代码语言:javascript
复制
newTime= (Calendar) originalDate.clone();
票数 42
EN

Stack Overflow用户

发布于 2010-04-08 04:33:08

  1. 我的直觉告诉我,

()会更快。

  1. 为什么不用一个快速的基准测试*
  2. 考虑只使用date.getTime()的长值,如果你不需要做日历计算的话。

*

代码语言:javascript
复制
private static final int N = 100000;

public static void main(final String[] args) throws Exception {

    final Date date = new Date();

    {
        final long start = System.currentTimeMillis();
        for (int i = 0; i < N; i ++) {
            final Date date2 = (Date) date.clone();
        }
        final long end = System.currentTimeMillis();
        System.out.println("Clone: " + (end - start) + " ms");
    }
    {
        final long start = System.currentTimeMillis();
        for (int i = 0; i < N; i ++) {
            final Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            final Date date2 = cal.getTime();
        }
        final long end = System.currentTimeMillis();
        System.out.println("Caldendar.setTime: " + (end - start) + " ms");
    }
}

结果:

代码语言:javascript
复制
Clone: 13 ms
Caldendar.setTime: 317 ms

PS我不确定,如果你真的需要一个Calendar,或者Date,所以请随意修改测试...

(作为对评论的回应:为了提高测试的准确性,您还可以单独运行测试,增加N的值,...)

票数 32
EN

Stack Overflow用户

发布于 2016-06-07 00:19:43

在Scala中,我会使用.asInstanceOfCalendar对日历进行克隆()和强制转换,如下所示:

代码语言:javascript
复制
val now = Calendar.getInstance()
val newDate = now.clone().asInstanceOf[Calendar]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2595630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档