在 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 中查找多核代码的执行时间的主要内容,如果未能解决你的问题,请参考以下文章

java线程基础梳理

多个平台的性能分析[关闭]

在线程代码中查找函数执行与再次执行同一函数之间的时间间隔

多核CPU和单核的区别?

作业进程线程多线程多核

有没有办法在 Java 中执行不安全的代码(禁用安全管理器)?