[問題] Thread效能的疑惑

看板C_and_CPP (C/C++)作者 (執著)時間16年前 (2010/02/03 21:57), 編輯推噓2(2016)
留言18則, 6人參與, 最新討論串1/3 (看更多)
我把我某個模擬程式改成multi-threading的版本,使用的是boost thread, 但效能不知為什麼沒有很大的增進。 這模擬程式假設要處理1000筆資料,彼此沒有相依性、同步問題, 但有讀取相同的global variables。 如果是用2個threads,就是分別處理500筆資料。 我2 threads的模擬程式在我的雙核筆電(Win 7)跑時,CPU幾乎在9x%。 1 thread就只會用到4x%。 但兩種不同threads的版本執行的時間卻差不多。 2 threads: 2.8 (minutes) 1 threads: 3.0 (minutes) 我也試過把原先完全沒使用multi-threading的版本拿去跑, 還是3.0 (minutes)。 不知各位有經驗的大大,你們使用multi-threading使用多少CPU cores? 效能最大增加多少? 我目前的測試是2 cores、2 threads、3x%,不知道合不合理。 我感覺我的程式,複製2個,一起執行,還比2 threads快。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.4.129 ※ 編輯: zxvc 來自: 218.168.4.129 (02/03 21:58)

02/03 22:01, , 1F
memory allocation time?
02/03 22:01, 1F

02/03 22:02, , 2F
我記得boost的thread是....改用pthread or win32 API看看?
02/03 22:02, 2F

02/03 22:09, , 3F
樓上有什麼八卦?
02/03 22:09, 3F

02/03 22:12, , 4F
一樓,我覺得這有可能。因為我主要的運算在作遞迴。但我記憶
02/03 22:12, 4F

02/03 22:13, , 5F
憶體使用不高,2 threads大約2MB。
02/03 22:13, 5F

02/03 22:17, , 6F
我後來又覺得問題不在遞迴。或者這樣講好了,我認為我的程式
02/03 22:17, 6F

02/03 22:19, , 7F
2 threads大部分的狀況都跟2 processes的狀況一樣,但感覺
02/03 22:19, 7F

02/03 22:20, , 8F
2 processes的效能趨近2倍。
02/03 22:20, 8F

02/03 22:21, , 9F
context swap會是這個關係嗎??
02/03 22:21, 9F

02/03 22:21, , 10F
我改天再把2 processes的實驗數據做出來。先去睡覺 (逃)
02/03 22:21, 10F

02/03 22:22, , 11F
@@context switch
02/03 22:22, 11F

02/03 22:25, , 12F
我覺得可以看一下allocate mem這段 如果是先做出pool
02/03 22:25, 12F

02/03 22:25, , 13F
再branch 成兩個 thread 或許會不一樣
02/03 22:25, 13F

02/03 22:26, , 14F
可以先觀察 page fault 的狀況
02/03 22:26, 14F

02/03 22:27, , 15F
感覺2個thread都再同一個CPU上執行的樣子...
02/03 22:27, 15F

02/04 04:34, , 16F
推二樓。 2 processes有變快就改用kernel-level thread吧
02/04 04:34, 16F

02/04 08:10, , 17F
感覺應該在kernel thread這塊的問題 如果kernel thread沒
02/04 08:10, 17F

02/04 08:11, , 18F
變 user-thread叫在多 還是只照os的預設設定去跑
02/04 08:11, 18F
文章代碼(AID): #1BQO37tS (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BQO37tS (C_and_CPP)