我在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的帖子中沒有看到任何表明他正在這樣做的內容,但是這個帖子在細節上很短。 –
不是沒有給我們更多的細節;根據你提供的細節數量,幾乎沒有什麼可以說的。 –
工作更聰明,不難。 –
我要推翻這一趨勢,並投票重新開放,因爲這不是「只與一個小的地理區域,特定的時刻或非常狹窄的情況相關,而這種情況通常不適用於全球的互聯網用戶」 。相反,許多初級程序員可能有這個確切的問題**。這是一個基本問題嗎?是。因此,是否存在重複,這應該關閉?也許。但是,這是因爲正確的原因而關閉它。 –