我需要将一个给定的日期复制100次(我不能通过引用传递)。我想知道下面两个选项中哪一个更好
newTime=Calendar.getInstance().setTime(originalDate);或
newTime=originalDate.clone();性能是这里的主要内容。
谢谢。
发布于 2010-04-08 04:24:22
我会用
newTime= (Calendar) originalDate.clone();发布于 2010-04-08 04:33:08
()会更快。
date.getTime()的长值,如果你不需要做日历计算的话。*
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");
}
}结果:
Clone: 13 ms
Caldendar.setTime: 317 msPS我不确定,如果你真的需要一个Calendar,或者Date,所以请随意修改测试...
(作为对评论的回应:为了提高测试的准确性,您还可以单独运行测试,增加N的值,...)
发布于 2016-06-07 00:19:43
在Scala中,我会使用.asInstanceOfCalendar对日历进行克隆()和强制转换,如下所示:
val now = Calendar.getInstance()
val newDate = now.clone().asInstanceOf[Calendar]https://stackoverflow.com/questions/2595630
复制相似问题