【问题标题】:Finding execution time for multicore code in Java在 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 程序员,因此无法帮助您解决问题的这方面。但是(据说)纳秒内的任何数字都可能在统计上毫无用处。让你的线程运行更长时间以获得有用的计时数据。

标签: java multicore


【解决方案1】:

您应该通过对每个线程调用 join 来等待线程完成。

否则,除了创建线程所需的时间之外,您什么都不会计时。

【讨论】:

  • 是的,这就是我需要的。这在我的代码中打开了另一个问题,所以我会很高兴修复它。谢谢!
猜你喜欢
  • 2021-06-20
  • 2017-09-11
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多