2015-01-14 51 views
0

對於多核環境中的程序性能,我有一個非常基本的問題。在多核機器上Java程序的性能如何提高

如果我運行一個簡單的java程序,比如計算一個數的平方根或在多核機器中找到第n個斐波那契數列,性能如何提高?

如果在單核上運行需要x毫秒,這是否意味着在8核心計算機上需要x/8毫秒? (從技術上講,我沒有看到這是正確的)

有沒有一種方法可以計算多核機器上的性能改進?

+0

這是不是Java的問題,它的方式過於寬泛。這取決於工作量的可仿效性,尤其取決於減少子任務輸出的關鍵路徑和成本。 – chrylis

+0

這看起來不太寬泛。也許有點理論和潛在的主題。但它當然可以回答。 – theMayer

回答

1

如果在單個內核上運行需要x毫秒,這是否意味着在8核心計算機上需要x/8毫秒? (從技術上說我看不出這是正確的)

而且你會是對的。

如果您的程序使用了您計算機的所有計算單元(內核),則只會看到性能提高。

現在,如果您的代碼是可並行化的,並且您將其編程爲如此,那麼您可能會見證性能提升。 Java提供了大量的解決方案:

  • Executor s;
  • fork-join框架;
  • (平行)Stream s。

然而,核心條件仍然是:你的代碼必須是並行開始與...