我在Java中有一个外部循环和几个嵌套循环的代码。表现并不理想。我可以采取哪些策略来提高整体绩效?如何提高java的性能速度?
For(int I = 0; I < 20000000; < i++) // 20 million iterations in outer loop
{
For(…)
For(…)
For(…)
method...
method...
}
我在Java中有一个外部循环和几个嵌套循环的代码。表现并不理想。我可以采取哪些策略来提高整体绩效?如何提高java的性能速度?
For(int I = 0; I < 20000000; < i++) // 20 million iterations in outer loop
{
For(…)
For(…)
For(…)
method...
method...
}
您正在遗漏很多细节。然而...
如果4个不同的for
循环不必按顺序发生,您可以在单独的线程上运行每个for
循环。
如果您有超过1个CPU内核运行代码,则整体性能会提高。
除此之外,知道您是否可以提高性能的最佳方法是查看时间花在哪里。在分析器中运行你的代码。
嗨,我的工作空间提供12台电脑与Linux系统,每个人有96 GB的RAM和32核心CPU。有没有什么方法可以提高硬件速度? –
当然。针对可以并行处理的任何内容运行多个线程,并在各个计算机之间分发工作。您需要提供更多有关您的工作性质的细节,以获得有关在多台计算机之间分割工作的建议。 –
不知道详细信息很难说:-)运行for循环不应该花这么长时间。
如果你有小的操作,你应该做一些microbenchmarking(见here和here)。
如果你做一个稍微复杂一些的东西,你需要做一些剖析(Eclipse中,NetBeans的带有自己的探查,你也可以尝试JProfiler但也有quite a lot of alternatives)。
如果您可以并行化循环,则可以在多个内核上运行它。或者你可以购买更快的CPU。
他的代码是用Java编写的。关于C#的建议如何提供帮助?而且,“收益回报”并不总是最快捷的做法。这取决于你在做什么。 –
@EricJ。这就是为什么我把Java链接库....完全同意,收益率回报并不总是最快的方式做事,但有时它可以真正帮助。 –
我错过了Java链接。感谢您加粗它:-)但是,这只会有助于当循环会返回某种集合时,实际上处理该集合中的对象的代码一次只需要它们一个(避免创建一个内存和时间成本集合只是为了保存返回值,这是不需要的)。在OP的帖子中没有看到任何表明他正在这样做的内容,但是这个帖子在细节上很短。 –
不是没有给我们更多的细节;根据你提供的细节数量,几乎没有什么可以说的。 –
工作更聪明,不难。 –
我要推翻这一趋势,并投票重新开放,因为这不是“只与一个小的地理区域,特定的时刻或非常狭窄的情况相关,而这种情况通常不适用于全球的互联网用户” 。相反,许多初级程序员可能有这个确切的问题**。这是一个基本问题吗?是。因此,是否存在重复,这应该关闭?也许。但是,这是因为正确的原因而关闭它。 –