Box*_*iom 0 java arrays sorting timer
我有一些代码在数组中生成1000个数字然后对它们进行排序:
import java.util.Arrays;
import java.util.Random;
public class OppgA {
public static void main(String[] args) {
int[] anArray;
anArray = new int[1000];
Random generator = new Random();
for(int i=0; i<1000; i++){
anArray[i] = (generator.nextInt(1000)+1);
}
Arrays.sort(anArray);
System.out.println(Arrays.toString(anArray));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我被要求计算并打印排序数组所花费的时间.我有什么线索可以做到这一点?我真的找不到太多可以帮助我解决的问题.
谢谢!
您可以在调用System.nanoTime()之前和之后调用(并存储结果)Arrays.sort()- 差异是以纳秒为单位的时间.该方法优于System.currentTimeMillis计算持续时间.
long start = System.nanoTime();
Arrays.sort(anArray);
long end = System.nanoTime();
long timeInMillis = TimeUnit.MILLISECONDS.convert(end - start, TimeUnit.NANOSECONDS);
System.out.println("Time spend in ms: " + timeInMillis);
Run Code Online (Sandbox Code Playgroud)
但请注意,如果多次运行程序,测量结果可能会有很大差异.为了获得更精确的计算,将涉及更多 - 例如:请参阅:如何在Java中编写正确的微基准测试?.
在排序之前,声明一个 long ,它对应于开始排序之前的时间:
long timeStarted = System.currentTimeMillis();
//your sorting here.
//after sorting
System.out.println("Sorting last for:" + (System.currentTimeMillis() - timeStarted));
Run Code Online (Sandbox Code Playgroud)
结果将返回相当于排序的毫秒数。
System.nanoTime()正如 assylias 评论的那样,如果您喜欢精确测量经过的时间,您也可以使用。
| 归档时间: |
|
| 查看次数: |
4983 次 |
| 最近记录: |