差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:effective_java:lambdas_and_streams:use_caution_when_making_streams_parallel [2019/07/21 00:32] tony [Bad] |
java:effective_java:lambdas_and_streams:use_caution_when_making_streams_parallel [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
{{tag>java effective_java}} | {{tag>java effective_java}} | ||
====== Effective Java - Use caution when making streams parallel ====== | ====== Effective Java - Use caution when making streams parallel ====== | ||
- | ===== Introduction & My Opinion ===== | + | ===== Introduction ===== |
在Java 8中,你只要用以下寫法,很容易就可以讓你的工作並行化: | 在Java 8中,你只要用以下寫法,很容易就可以讓你的工作並行化: | ||
<code java> | <code java> | ||
行 31: | 行 31: | ||
- 資料結構、資料量、boxing/un-boxing、pool size、工作分解與合併都會影響到效能。 | - 資料結構、資料量、boxing/un-boxing、pool size、工作分解與合併都會影響到效能。 | ||
===== Note ===== | ===== Note ===== | ||
- | Effective Java第三版Item 48。 | + | - Effective Java第三版Item 48。 |
+ | - 有一種用來簡單判斷是否要用parallel stream的NQ Model,可參考[[http://gee.cs.oswego.edu/dl/html/StreamParallelGuidance.html|link]]。N為item數量,Q為function的工作量(也可用幾行程式碼來替代),N*Q至少要>=10000時,parallel才有可能會優於sequential;但根據這個[[https://www.youtube.com/watch?v=x5akmCWgGY0|演講]]內容提到,如果Q是i+=1這種操作,會由於CPU處理速度已太快的原因,即使N的數量有一百萬也不見得比較好。 | ||
===== Reference ===== | ===== Reference ===== | ||
* Effective Java, 3/e | * Effective Java, 3/e |