我的代码运行所花费的时间背后有什么直觉? (即在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
答案 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);