试图用Java来衡量经过的时间

Mar*_* B. 2 java

我无法让Java时钟测量从一个简单程序的开始到结束所经过的时间(以毫秒为单位).

我复制了下面的程序.您将看到我使用了实用程序Calendar,然后打印循环之前和之后的时间.无论循环花费多长时间,循环前后打印命令显示的时间都不会改变.

你能建议一个解决方案吗?

我用DrJava.

import java.util.Calendar;

class time
{
  public static void main(String[] args)
  {

    int sum=0;
    int i=0;
    int j=0;
    int n=300;

    Calendar cal = Calendar.getInstance();

    System.out.println("Current milliseconds since 13 Oct, 2008 are :" + cal.getTimeInMillis());

    for (i=0;i < n; i++)
    {
      sum++;
      System.out.println("ROW " + i);  
    }

    System.out.println(" Current milliseconds since 13 Oct, 2008 are :" + cal.getTimeInMillis());
  } 
}
Run Code Online (Sandbox Code Playgroud)

Poo*_*ool 12

使用

System.nanoTime();
Run Code Online (Sandbox Code Playgroud)

测量经过的时间.

这是从Java 1.5开始可用的,单调的(如果可能,方法细节).


Pas*_*ent 6

如果您想要精确测量经过的时间,请使用System.nanoTime().

从Java文档:

public static long nanoTime()
Run Code Online (Sandbox Code Playgroud)

返回最精确的可用系统计时器的当前值,以纳秒为单位.

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关.返回的值表示纳秒,因为某些固定但是任意时间(可能在将来,因此值可能为负).该方法提供纳秒精度,但不一定是纳秒精度.不保证值的变化频率.由于数值溢出,跨越大于约292年(263纳秒)的连续调用的差异将无法准确计算经过的时间.

例如,要测量某些代码执行所需的时间:

long startTime = System.nanoTime();
// ... the code being measured ...
long estimatedTime = System.nanoTime() - startTime;
Run Code Online (Sandbox Code Playgroud)