【问题标题】:How to improve java performance speed? [closed]如何提高java性能速度? [关闭]
【发布时间】:2012-06-30 08:30:03
【问题描述】:

我的 Java 代码有一个外循环和几个嵌套循环。表现并不令人满意。我可以遵循哪些策略来提高整体性能?

For(int I = 0; I < 20000000; < i++) // 20 million iterations in outer loop
{    
    For(…)

    For(…)

    For(…)

    method...

    method...    
} 

【问题讨论】:

  • 并非没有给我们更多细节;根据您提供的详细信息,几乎没有什么可以说的。
  • 我要逆势而上投票重新开放,因为这不是only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet。相反,许多初级程序员可能有这个确切的问题。这是一个基本问题吗?是的。是否有重复的 SO 这应该参考关闭?可能是。但它确实存在,出于正确的原因关闭它。

标签: java for-loop


【解决方案1】:

你遗漏了很多细节。不过……

如果 4 个不同的 for 循环的事情不必按顺序发生,您可以在单独的线程上运行每个 for 循环。

如果您有超过 1 个 CPU 内核运行代码,整体性能将会提高。

除此之外,了解您是否可以提高性能的最佳方法是查看时间都花在了哪些地方。在分析器中运行您的代码。

【讨论】:

  • 您好,我的工作空间提供 12 台 linux 系统计算机,每台计算机有 96 GB RAM 和 32 核 CPU。有什么方法可以通过硬件提高速度?
  • 当然。为任何可以并行处理的东西运行多个线程,并在不同的计算机之间分配工作。您需要提供更多关于工作性质的详细信息,以获得有关在多台计算机之间分配工作的建议。
【解决方案2】:

不知道细节很难说 :-) 运行 for 循环不应该花这么长时间。

如果你有小型操作,你应该做一些微基准测试(见herehere)。

如果你做一些复杂的东西,你需要做一些分析(Eclipse,NetBeans 自带分析器,你也可以试试JProfiler 但有quite a lot of alternatives)。

【讨论】:

    【解决方案3】:

    如果您可以并行化循环,则可以在多个内核上运行它。或者您可以购买更快的 CPU。

    【讨论】:

      【解决方案4】:

      我使用yield return 提高了 C# for 循环的性能。我认为您绝对应该评估使用它。

      检查this SO 问题,说明如何在Java中使用它。

      这是指向 Java 库的直接链接 - 来自答案 -:

      1. Article
      2. Library

      【讨论】:

      • 他的代码是 Java 的。关于 C# 的建议有什么帮助?此外,yield return并非总是最快的做事方式。这取决于你在做什么。
      • @EricJ。这就是我放置 Java Link 库的原因.... 完全同意 yield return 并不总是最快的做事方式,但有时它确实有帮助。
      • 我错过了 Java 链接。感谢您将其加粗:-) 不过,这只会在循环返回某种集合时才有帮助,而实际上处理该集合中的对象的代码一次只需要一个(避免创建一个集合只是为了保存返回值,否则不需要)。在 OP 的帖子中看不到任何表明他正在这样做的内容,但是,该帖子的细节非常短。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 2022-07-13
      • 2017-05-22
      • 2022-06-22
      相关资源
      最近更新 更多