在 Java 中查找多核代码的执行时间
Posted
技术标签:
【中文标题】在 Java 中查找多核代码的执行时间【英文标题】:Finding execution time for multicore code in Java 【发布时间】:2012-02-28 19:03:41 【问题描述】:我试图找出 Java 中多核和单核解决方案在运行时间上的差异。到目前为止,单核运行良好。但是,我从多核解决方案中收到了不稳定的报告,有些报告说它花费了 0 纳秒,或者稍长一些。
多核如下:(请注意,我并没有做任何太高级的事情,只是想找出它运行的时间长度。CPU execution time in Java 说服我使用System.nanoTime()
而不是.currentTimeMillis()
)
long start = System.nanoTime();
Runnable r0 = new FindMagicBrute(n);
Thread t0 = new Thread(r0);
Thread t1 = new Thread(r0);
Thread t2 = new Thread(r0);
t0.start();
t1.start();
t2.start();
long end = System.nanoTime();
System.out.println("Multithreaded run ended in " + (end-start) + " nanoseconds.");
有没有办法确定线程何时停止执行?
【问题讨论】:
你确定你在这里做什么?您正在启动三个线程,然后测量启动其他三个线程的时间。不出所料,它可能是 0。 我不是 Java 程序员,因此无法帮助您解决问题的这方面。但是(据说)纳秒内的任何数字都可能在统计上毫无用处。让你的线程运行更长时间以获得有用的计时数据。 【参考方案1】:您应该通过对每个线程调用 join
来等待线程完成。
否则,除了创建线程所需的时间之外,您什么都不会计时。
【讨论】:
是的,这就是我需要的。这在我的代码中打开了另一个问题,所以我会很高兴修复它。谢谢!以上是关于在 Java 中查找多核代码的执行时间的主要内容,如果未能解决你的问题,请参考以下文章