Re: [問題] Thread效能的疑惑

看板C_and_CPP (C/C++)作者 (執著)時間16年前 (2010/02/04 10:37), 編輯推噓0(0012)
留言12則, 3人參與, 最新討論串2/3 (看更多)
: → adxis:memory allocation time? 02/03 22:01 : → lungswu:我記得boost的thread是....改用pthread or win32 API看看? 02/03 22:02 : → zxvc:樓上有什麼八卦? 02/03 22:09 : → zxvc:一樓,我覺得這有可能。因為我主要的運算在作遞迴。但我記憶 02/03 22:12 : → zxvc:憶體使用不高,2 threads大約2MB。 02/03 22:13 : → zxvc:我後來又覺得問題不在遞迴。或者這樣講好了,我認為我的程式 02/03 22:17 : → zxvc:2 threads大部分的狀況都跟2 processes的狀況一樣,但感覺 02/03 22:19 : → zxvc:2 processes的效能趨近2倍。 02/03 22:20 : 推 flydragon198:context swap會是這個關係嗎?? 02/03 22:21 : → zxvc:我改天再把2 processes的實驗數據做出來。先去睡覺 (逃) 02/03 22:21 程式複製二個,各跑500筆(2 processes),花了1.583 (min.), 真的趨近兩倍。 : → flydragon198:@@context switch 02/03 22:22 : → adxis:我覺得可以看一下allocate mem這段 如果是先做出pool 02/03 22:25 : → adxis:再branch 成兩個 thread 或許會不一樣 02/03 22:25 : → adxis:可以先觀察 page fault 的狀況 02/03 22:26 : → lungswu:感覺2個thread都再同一個CPU上執行的樣子... 02/03 22:27 : → a127a127:推二樓。 2 processes有變快就改用kernel-level thread吧 02/04 04:34 我改用pthread: http://sourceware.org/pthreads-win32/ 也有使用kernel thread: pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)); 但還是效能不彰,2 cores、2 kernel threads、2.6x (min.) XD : 推 akaing:感覺應該在kernel thread這塊的問題 如果kernel thread沒 02/04 08:10 : → akaing:變 user-thread叫在多 還是只照os的預設設定去跑 02/04 08:11 我還試過把2 threads,模擬1 thread的效能,類似如下(boost): thread t1(&f); t1.join(); thread t2(&f); t2.join(); 還是跑3.x (min.),也就是跟1 thread相當的時間。 我認為我的multi-thread程式有照著2 processes的情況去寫, 包括memory的allocation,比如說我有一個class, 每個thread只會在一開始配置一次。2 processes也是一樣的情形。 但不知為什麼2 threads效能不彰。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.4.129

02/04 10:44, , 1F
這是不是3個thrad? main, t1, t2
02/04 10:44, 1F

02/04 10:46, , 2F
樓上是的,但我的main只作等待t1、t2,不作計算。
02/04 10:46, 2F

02/04 11:07, , 3F
其實你用pthread win32也沒用, 因為它是base on win32的
02/04 11:07, 3F

02/04 11:08, , 4F
POSIX thread 模擬, 底層一樣是Win32系統的thread, 所以
02/04 11:08, 4F

02/04 11:09, , 5F
你的問題在於如何將程式工作平均地分配給n個thread, 或
02/04 11:09, 5F

02/04 11:11, , 6F
許n根本不用大於1, 這麼說你懂嗎?
02/04 11:11, 6F

02/04 11:12, , 7F
另外, thread本身是會有額外開銷的(CPU & memory), 所以
02/04 11:12, 7F

02/04 11:14, , 8F
不會有分成n個thread後, 執行效率達原來n倍這種數據出現
02/04 11:14, 8F

02/04 11:32, , 9F
如果不開thread t2, 各500筆資料由main thread及thread t2
02/04 11:32, 9F

02/04 11:32, , 10F
執行,結果會如何?
02/04 11:32, 10F

02/04 11:34, , 11F
thread t1才對 ^
02/04 11:34, 11F

02/04 11:41, , 12F
用main與t1算,這我之前也試過了,大概也是2.7~2.8 min.。
02/04 11:41, 12F
文章代碼(AID): #1BQZBpvK (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1BQZBpvK (C_and_CPP)