在java中会有以下内容的答案?

时间:2013-12-16 09:58:00

标签: java loops

long stime=System.currentTimeMillis();
for(int i=0;i<500000;i++)
{
  String s1="Hello";
  String s2="Hello";
}
 long etime=System.currentTimeMillis();
 System.out.println("Time diff"+(etime-stime));
long stime1=System.currentTimeMillis();
for(int i=0;i<500000;i++)
{
  String s3=new String("Hello");
  String s4=new String("Hello");
}
 long  etime1=System.currentTimeMillis();
 System.out.println("Time diff"+(etime1-stime1));

实际上我在这两种情况下得到0回答。为什么在这两种情况下为零

2 个答案:

答案 0 :(得分:12)

使用System.nanoTime()执行时间。使用System.currentTimeMillis();

放置System.nanoTime();

System.nanoTime()为您提供纳秒级分辨率计时器,在大多数系统上至少精确到秒。这使您可以看到小于1毫秒的较小时间间隔。

答案 1 :(得分:3)

  

为什么归零

您的代码没有做任何有用的事情,所以它不会太令人惊讶,它需要0毫秒。它可能需要900,000纳秒或大约3,000,000个时钟周期,但仍然是相同的毫秒。

您可以使用System.currentTimeMillis()

而不是System.nanoTime()

这不会告诉你代码运行的方式,而是会告诉你JVM检测代码需要多长时间才能执行任何有用的操作并优化它。

简而言之,毫秒是电脑的永恒。一个10核的CPU每个时钟周期最多可以执行3条指令,3.5 GHz可以在一毫秒内完成100,000,000条指令(如果它能达到1%,那么你会很幸运)另一个要记住的关键是JVM优化动态的代码意味着它开始变慢并且变得更快,如果你没有做任何有用的事情,你可能会得到同样有用的时间;)