作者bebeewei (蜜蜂)
看板AndroidDev
標題[問題] 關於平行計算 反而更慢
時間Thu Jul 10 00:14:09 2014
最近用到平行程式 想請教兩個問題
第一個問題是
我用 AsyncTask 開五個 加上 原本的main thread 下去跑,
(總共六個thread跑)跑出來的時間竟然比沒有用Async Task 還慢.....
PS:真得有平行在跑 有看system.out
請問有人有遇到同樣的問題嗎? 搞不懂為甚麼開thread 會 跑得比較慢?
請問該如何加快呢?
第二個問題是
請問有前輩可以分享一下用平行計算的經驗嗎?
感激
--
I like people= )
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.234.143
※ 文章網址: http://webptt.com/m.aspx?n=bbs/AndroidDev/M.1404922453.A.59C.html
1F:→ Deltaguita:何必一次開6個呢? 開一個在背景跑就好了啊 07/10 00:16
2F:→ Deltaguita:AsyncTask 是為了不影響UI Thread而使用的 07/10 00:16
3F:推 typepeter:Async是不會block main thread, 不代表會比較快 07/10 00:17
4F:→ typepeter:越多額外的thread會有明顯的overhead 07/10 00:18
5F:→ Deltaguita:並不是開越多Thread越快,你的CUP並沒有因此而變多 07/10 00:18
6F:→ typepeter:Async的好處是使用者不會覺得反應頓頓的 不是真的快 07/10 00:18
7F:→ bebeewei:請問該如何加快呢?? 07/10 00:27
8F:→ bebeewei:感激各位前輩回答 07/10 00:27
※ 編輯: bebeewei (140.114.234.143), 07/10/2014 00:27:55
9F:→ bebeewei:目的是為了加速 所以想說開thread 07/10 00:30
10F:推 tac0wu:看你處理的事情是甚麼 RenderScript看能不能幫上忙 07/10 01:16
11F:→ tac0wu:Default AsyncTask是serial的 詳情 07/10 01:18
13F:→ redok:load夠多 開thread才有意義, 同時也要滿足有多核心的環境 07/10 01:19
14F:→ redok:loading 07/10 01:20
15F:→ redok:而且你thread也要剛好在不同核心上運作才有效果 07/10 01:20
16F:推 Killercat:不要用AsyncTask...... 07/10 13:19
17F:→ Killercat:基本的thread<=>handler不好嘛 幹嘛要多包一層 XD 07/10 13:19
18F:→ anguso:thread<=>handler 沒辦法用 thread pool. AsyncTask 可以 07/10 14:03
19F:→ JULONE780701:multiThread不是用來加速的吧... 07/10 15:36
20F:→ bebeewei:我很確定有平行跑~ 另外我今天測試過thread了 07/10 23:06
21F:→ bebeewei:結果還是慢的~~Q___Q 07/10 23:06
22F:推 tac0wu:你甚麼平行應用都沒講 我們這樣隔空抓藥 也很無奈 07/11 01:07
23F:→ Deltaguita:有些東西在VM上跑的確會慢些 考慮用JNI嗎? 07/11 01:39
24F:→ Killercat:我不太懂位什麼不能丟pool, new個executor丟進去會有 07/11 10:44
25F:→ Killercat:什麼問題嘛(抓頭)? 07/11 10:45
26F:推 changyuheng:請問您執行環境的 CPU 是幾核心? 07/11 13:16
28F:推 wgl1242254:平行化是一件非常麻煩的事情XD 07/11 14:37
29F:→ Killercat:maa..我想他說的平行跑應該根平行化是不同的事情... 07/11 15:10
30F:→ Killercat:不過元po要知道 因為Context Switch要成本 這搞不好更慢 07/11 15:11
31F:→ Killercat:在一個沒有互相等待的case來講 單核跑多緒不會比較快 07/11 15:12
32F:→ issuemylove:concurrent 跟 parallel 要搞清楚呀 07/11 15:13
33F:→ Killercat:除非你有很多邏輯核 而且確定作業系統會幫你dispatch 07/11 15:13
34F:→ issuemylove:不然你講講 System.out你寫了甚麼 07/11 15:15
35F:→ bebeewei:hi 各位前輩不好意思那麼晚回 07/13 21:13
36F:→ bebeewei:我用的是S4 是雙四核 我是假設有一百筆資料 07/13 21:14
37F:→ bebeewei:每筆做同樣的事情 07/13 21:14
38F:→ bebeewei:有的 我就是用那篇的方法 07/13 21:17