gpt4 book ai didi

java - 执行时间和处理时间波动

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:52 24 4
gpt4 key购买 nike

为什么每次我在 Netbeans 中运行以下代码时,执行会出现波动并且进程 CPU 时间会有所不同。我的CPU使用率每次都不同吗?以及如何找到以下代码的 CPU 使用情况。

class test{
static com.sun.management.OperatingSystemMXBean mxbean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();

public static void main(String[] args) throws InterruptedException {


long start1 = System.currentTimeMillis();
long pstart1 = mxbean.getProcessCpuTime();
long pstart2 = TimeUnit.MILLISECONDS.convert(pstart1, TimeUnit.NANOSECONDS);

for (int i = 0; i < 10000; i++) {

System.out.println("hello");

}

long end1 = System.currentTimeMillis();
long pend1 = mxbean.getProcessCpuTime();
long pend2 = TimeUnit.MILLISECONDS.convert(pend1, TimeUnit.NANOSECONDS);
float pdif = pend2 - pstart2;
float edif = end1 - start1;

System.out.println(edif);
System.out.println(pdif);

}
}

最佳答案

您主要执行 IO,因此您非常依赖操作系统的行为。

毫秒不是很准确,分辨率可能超过 1 毫秒。例如currentTimeMillis 在 Windows XP 上的分辨率约为 15 毫秒。在许多 UNIX 系统上,所使用的 CPU 时间的分辨率为 10 毫秒。

如果您使任务受 CPU 限制而不是 IO 限制并运行更长时间,您应该会看到更一致的计时。

关于java - 执行时间和处理时间波动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com