Java毫秒到纳秒
我刚刚开始学习Java,我想制作随机数组并测量时间。我使用了Java毫秒到纳秒,java,Java,我刚刚开始学习Java,我想制作随机数组并测量时间。我使用了System.currentTimeMillis()在填充数组的开始处,然后和。然后我想将毫秒转换为纳秒,并使用longtotal=TimeUnit.millizes.toNanos(time1)但发生了故障: import java.util.*; import java.util.concurrent.TimeUnit; public class main { public static void main(String[] ar
System.currentTimeMillis()代码>在填充数组的开始处,然后和。然后我想将毫秒转换为纳秒,并使用longtotal=TimeUnit.millizes.toNanos(time1)代码>但发生了故障:
import java.util.*;
import java.util.concurrent.TimeUnit;
public class main {
public static void main(String[] args) {
long time1,time2,time3;
int [] array = new int[10];
Random rand =new Random(100);
time1=System.currentTimeMillis();
for(int i=0;i<array.length;i++){
array[i]=rand.nextInt(100);
}
time2=System.currentTimeMillis()-time1;
long total=TimeUnit.MILLISECONDS.toNanos(time1);
System.out.println("Time is:"+time1
);
}
}
import java.util.*;
导入java.util.concurrent.TimeUnit;
公共班机{
公共静态void main(字符串[]args){
长时间1,时间2,时间3;
int[]数组=新的int[10];
随机随机数=新随机数(100);
time1=System.currentTimeMillis();
对于(inti=0;iWell,而不是使用
System.currentTimeMillis()
你可以用
System.nanoTime()
它以纳秒为单位提供时间,无需进行任何转换
我也认为这可能是错误的:
long total=TimeUnit.MILLISECONDS.toNanos(time1);
System.out.println("Time is:"+time1);
也许您想打印total
而不是time1
编辑
请注意,正如Mark Rotteveel所说,在System.nanoTime
和System.currentTimeMillis()
中是不同的
来自Javadocs:
System.currentTimeMillis()
以毫秒为单位返回当前时间。
请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。
例如,许多操作系统以几十毫秒为单位测量时间。
及
System.nanoTime()
返回最精确的可用系统计时器的当前值,单位为纳秒。
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。
好的,不要使用
System.currentTimeMillis()
你可以用
System.nanoTime()
它以纳秒为单位提供时间,无需进行任何转换
我也认为这可能是错误的:
long total=TimeUnit.MILLISECONDS.toNanos(time1);
System.out.println("Time is:"+time1);
也许您想打印total
而不是time1
编辑
请注意,正如Mark Rotteveel所说,在System.nanoTime
和System.currentTimeMillis()
中是不同的
来自Javadocs:
System.currentTimeMillis()
以毫秒为单位返回当前时间。
请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。
例如,许多操作系统以几十毫秒为单位测量时间。
及
System.nanoTime()
返回最精确的可用系统计时器的当前值,单位为纳秒。
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。
您可能需要像这样重写代码:
public static void main(String[] args) {
long start, end, difference;
start = System.nanoTime();
//code to meassure here
end = System.nanoTime();
difference = end - start;
System.out.println("Time taken:" + difference);
}
您可能希望像这样重写代码:
public static void main(String[] args) {
long start, end, difference;
start = System.nanoTime();
//code to meassure here
end = System.nanoTime();
difference = end - start;
System.out.println("Time taken:" + difference);
}
“Мааааааааааааааааааааааафааааааааа107(意思是“代码”):)我想你需要System.out.println(“时间是:“+total”);
并将total改为使用time2
而不是time1
你想告诉我们哪里不对吗?请注意System.nanoTime()
提供时间的方式与currentTimeMillis()不同
有。@MarkrotVeel是的,我忘了说这个,我会更新我的答案…OP也很可能会打印出开始时间和结束时间之间的差异(time2
),而不是只打印开始时间(time1
)在nano中。注意System.nanoTime()
提供时间的方式与currentTimeMillis()
提供时间的方式不同。@MarkrotVeel是的,我忘了说这句话,我会更新我的答案……而且OP很可能会打印开始时间和结束时间之间的差异(time2
),而不是只打印开始时间(time1
)。