我的代码运行需要多长时间背后有什么直觉?

时间:2014-11-25 19:44:22

标签: java arraylist operating-system cpu

我的代码运行所花费的时间背后有什么直觉? (即在java中将100个对象添加到ArrayList中需要多长时间?)

澄清一下,我不是在寻找计时器。我正在寻找关于每条指令花费多长时间的低级讨论。例如,假设我们有以下设置

Object[] array = new Object[100];
currentIndex = 0;
// I call myList.add(myObject);

每条指令需要多长时间:

指示1:

数组中的第一个Object指针将引用myObject?

指示2:

currentIndex++

指示3:

if(currentIndex>100) 
// resize internal array

3 个答案:

答案 0 :(得分:1)

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

      long startTime = System.currentTimeMillis();

      long total = 0;
      for (int i = 0; i < 10000000; i++) {
         total += i;
      }

      long stopTime = System.currentTimeMillis();
      long elapsedTime = stopTime - startTime;
      System.out.println(elapsedTime);
   }
}

试试这个

答案 1 :(得分:1)

绝对没有&#34;直觉&#34;无论如何。你必须衡量。

基准。

和个人资料。

并测试。


在现代计算环境中,特定操作的实际执行速度所依赖的细节(越来越大)越多,实际上不可能直观地指出这些细节。执行它需要多长时间。

如果您有关于算法的计算复杂性的数据,您可能会提出关于更改(执行时间的比率)的近似值作为更改的函数。 (比率)输入大小。但那是一个完全不同的野兽。

答案 2 :(得分:1)

这将有效:

long startTime = System.nanoTime();

//do something - add 100 objects in ArrayList

long endTime = System.nanoTime();

System.out.println(endTime - startTime);