【问题标题】:Time Generation in JavaJava中的时间生成
【发布时间】:2014-04-16 12:30:51
【问题描述】:

昨天我在搞 Java,我写了这个应用程序。

public class MaxInt {

    public static void main(String[] args){
        long startTime = System.currentTimeMillis();
        long endTime;
        for(int i = 0; i < 2147483647; i++){
        }
        endTime = System.currentTimeMillis();

        long timeneeded = startTime - endTime;
        System.out.println("It took " + timeneeded + " milliseconds to count to 2,147,483,646.");
    }
}

然而,奇怪的是,循环完成后 timeneeded 等于 -3,这对我来说根本没有任何意义。我只是好奇这个程序为什么以及如何产生时间。

【问题讨论】:

  • 循环完成后timeneeded等于-3,这没有任何意义它确实如此。您应该使用endTime - startTime 来获取经过的时间,而不是startTime - endTimeendTime 将始终大于 startTime

标签: java process timing benchmarking


【解决方案1】:

你应该使用:

long timeneeded = endTime - startTime;

正如您所期望的endTime 会更大:)

【讨论】:

    【解决方案2】:

    startTime - endTime; 替换为endTime- startTime ;

    【讨论】:

      【解决方案3】:

      我为你整理了一下你的代码,也许以后会给你一些想法

         public static void main(String[] args) {
          long endTime;
          long startTime = System.currentTimeMillis();
          for (int i = Integer.MAX_VALUE; i > 0; i--) {}
          endTime = System.currentTimeMillis();
          long timeneeded = endTime - startTime;
          System.out.println(MessageFormat.format("It took {0} milliseconds to count to {1}.", timeneeded, Integer.MAX_VALUE));
          }
      

      此外,您没有数到 2,147,483,646,而是数到了 2,147,483,647。请记住,在您的 for 循环中,您将 0 作为第一个要计算的数字,因此您不必添加额外的数字。倒数也更有效率。

      【讨论】:

        猜你喜欢
        • 2015-03-14
        • 2013-02-05
        • 2010-09-11
        • 1970-01-01
        • 2011-06-14
        • 2012-09-21
        • 2012-04-21
        • 2012-06-16
        • 1970-01-01
        相关资源
        最近更新 更多