如何用Java度量执行时间

如何用Java度量执行时间,java,execution-time,Java,Execution Time,我试图打印下面代码的执行时间,但它总是给我0毫秒。我在网上找到了这段代码,想测量执行情况,所以在底部添加了几行代码 爪哇: 类合并排序{ 无效合并(int nums[],int left,int m,int right){ int n1=m-左+1; int n2=右-m; int Left_part_arra[]=新int[n1]; int Right_part_arra[]=新int[n2]; 对于(int i=0;i

我试图打印下面代码的执行时间,但它总是给我0毫秒。我在网上找到了这段代码,想测量执行情况,所以在底部添加了几行代码

爪哇:


类合并排序{
无效合并(int nums[],int left,int m,int right){
int n1=m-左+1;
int n2=右-m;
int Left_part_arra[]=新int[n1];
int Right_part_arra[]=新int[n2];
对于(int i=0;i如果(左)_part_arra[i]为了使其工作,此行:

long start = System.currentTimeMillis(); 
ob.sort(nums, 0, nums.length-1);
应位于此行之前:

long start = System.currentTimeMillis(); 
ob.sort(nums, 0, nums.length-1);

另外,请记住,这是在测量时间,而不是时间复杂度。您的
开始
结束
是紧挨着的。如果您想计时,开始应该在正在计时的操作之前,结束应该在之后。在这种情况下,它们应该夹心
ob.sort();


作为旁注,当要排序的集合较大时,排序的计时通常信息更丰富。在小样本量上测试时,许多慢速排序算法的性能似乎与更高效的算法一样好,甚至更好。

您无法“计算”big-O复杂性是通过计时测量来实现的。你可以通过分析算法在输入数量(或大小)增长时的行为来实现。big-O复杂性不会告诉你算法将运行多长时间-它告诉你运行时如何随着输入的变化而变化。这是(某种程度上)测量时间,而不是时间复杂度。Big-O的单位不是毫秒。不清楚你在问什么。这里没有Big-O或时间复杂度。不要误用标准术语。正是我的想法:-)也许有一个细节:Big-O需要计算/推导,你不“理论上测量”long start=System.currentTimeMillis();ob.sort(nums,0,nums.length-1);long end=System.currentTimeMillis();System.out.println(“合并时间:”+(end-start)+“毫秒”);合并时间:0毫秒我仍然得到0值,有什么想法吗?@kpAtCh您的代码可能需要不到1毫秒的时间才能完成,请尝试增加输入大小或使用
System.nanoTime()
而不是
System.currentTimeMillis();
long start=System.currentTimeMillis();ob.sort(nums,0,nums.length-1);long end=System.currentTimeMillis();System.out.println(“合并时间:+(end-start)+“毫秒”);合并时间:0毫秒我仍然得到0值,有什么想法吗?我不熟悉如何在Jave中获得时间,但我想说尝试一个更大的数组。