2014-02-27 41 views
2

哪裏是沒有產生一個進程,使一個更平行的函數調用的好處的限制?什麼功能是小到產卵到自己的過程

例如,當在樹結構中進行遞歸查找時,每個子節點都會向父級添加一個進程和消息調用,只是爲了進行簡單的比較。

回答

2

產卵過程和做的工作總是比只是做工作慢。它強烈依賴於您的確切要求。特別是非功能性要求是關鍵。所以去做測量。這很容易。有關更多詳細信息,請參閱關於Profiling的文檔,同時還有第三方項目放寬基準測試。

0

產生更多進程不一定會使任務並行運行。例如,如果您的系統上有24個內核,則任何時候只能運行24個進程。

相反,當您檢查樹中的節點時,可能會考慮完成了多少工作。比方說,節點值代表一個url,它需要被調用來檢索一個值。在這種情況下,爲每個節點產生一個進程可能是一個好主意。通過這種方式,可以安排進程在另一進程等待http請求的答案時運行。

+0

也許我在問這個問題時想到了這個錯誤,但在我的例子中,在樹中查找,我可以同時做24個查找(如果我有24個核心的話)。如果每個節點上的查找只是比較一個值,那麼會使所有查找順序進行(只是映射到樹上)而不是每個節點的產卵進程,並且每次比較它們會更便宜。 – davl

+0

也許我不應該關心這一點,因爲它只是實現細節,並不會在總體速度上做很多事情,並且肯定會降低可讀性。 – davl