[問題] 使用thread但是執行時間沒有縮短

看板java作者 (羽嵐)時間13年前 (2012/07/05 17:01), 編輯推噓6(6013)
留言19則, 8人參與, 最新討論串1/1
http://ideone.com/hHYoX 以上是我的程式 目的是為了從一個ArrayList中取得數值 然後全部做加總起來 可是我把thread數量從1改成4後 執行時間不但沒有縮短反而還增加了... 是因為我都從同一個陣列中取值的關係嗎? 補充:電腦是4核心的,所以我認為宣告4個thread可以讓速度達到最快 不知道這個觀念是不是正確的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.152.62

07/05 17:21, , 1F
看不太懂你想幹什麼,有些地方的程式邏輯好像有錯的樣子
07/05 17:21, 1F

07/05 17:23, , 2F
哪邊不懂
07/05 17:23, 2F

07/05 17:34, , 3F
幾核心跟幾個THREAD一點關係都沒有
07/05 17:34, 3F

07/05 17:41, , 4F
中間還有一個JVM,要看JVM怎處理吧...
07/05 17:41, 4F

07/05 17:52, , 5F
"聽說"JVM只能跟WINDOWS拿到一條..... 我不太不確定
07/05 17:52, 5F

07/05 18:01, , 6F
我是在linux下寫的...
07/05 18:01, 6F

07/05 18:13, , 7F
run()裡面的程式碼跟你要做的事情不一致,時間不能比
07/05 18:13, 7F

07/05 19:13, , 8F
程式邏輯沒錯,是我看錯了 囧
07/05 19:13, 8F

07/05 23:34, , 9F
我猜... 時間是浪費在建立執行緒跟同步上了....
07/05 23:34, 9F

07/05 23:36, , 10F
同步跟建立執行緒的成本,還蠻高的...
07/05 23:36, 10F

07/06 00:10, , 11F
我剛剛把程式移到16核心的電腦上跑 也都沒有變快= =
07/06 00:10, 11F

07/06 00:12, , 12F
為了這鳥問題花了一整天= =
07/06 00:12, 12F

07/06 00:48, , 13F
只能證明 無法真的多執行序
07/06 00:48, 13F

07/06 01:26, , 14F
跑了一下 72 ms 蠻快的啊 (笑)
07/06 01:26, 14F

07/06 06:54, , 15F
你的迴圈數太少,先加到讓程式執行至少要數十秒再來比較
07/06 06:54, 15F

07/06 07:40, , 16F
主要是內容物太弱了。做事的時間可能都不如搶lock多。
07/06 07:40, 16F

07/06 10:05, , 17F
看錯 +1 =.=
07/06 10:05, 17F

07/06 11:31, , 18F
07/06 11:31, 18F

07/06 13:00, , 19F
我把loop裡面的做的事情變複雜後 時間就真的縮短了 哈哈
07/06 13:00, 19F
文章代碼(AID): #1FzLVG6n (java)