為什麼 std async 似乎比 std thread 快一些?

時間 2021-06-09 14:20:24

1樓:Ignorance

async不指定選項,要麼新開執行緒,要麼在呼叫get求值同步執行。

所以你真想測應該指定std::lauch::async

2樓:好好休息

執行緒應該是在使用者空間跑幾個真正的執行緒,而非同步應該是呼叫作業系統核心空間提供的非同步介面,比如Windows的完成介面,Linux的Epoll等,也許就是用執行緒池實現的。

建立執行緒有開銷,切換執行緒也有開銷;而核心空間提供的非同步介面應該是就緒狀態,沒有建立開銷,核心空間切換的優先順序也比使用者空間的優先順序高。

這種簡單的計算用多執行緒顯然不合適,可能計算的時間遠小於執行緒本身的開銷,測量的其實是執行緒開銷與非同步開銷的差別;

把簡單的計算包裝在函式體中也不合適,因為函式呼叫的開銷也是很大的,也會導致測量結果不準確。

如果是大批量的計算,兩種呼叫的差別可以忽略不計。

3樓:狗剩真是寂寞如雪

我測試了一下,開啟O3優化thread比async快了一倍,開啟O2優化也是thread快,預設級別是async更快一點,蹲個解答。

4樓:彼岸花開

vector& v;

auto vSize = v.size();

敢問用的什麼IDE,這個沒有報錯&v[vSize]我跑了一下,結果如下

VS2019 DEBUG模式

async result: 2499648326async duration: 13.

6119 msseq result: 2499648326seq duration: 25.

6763 mssync result: 2499648326sync duration: 17.

9329 msVS2019 Release模式

async result: 2500637773async duration: 1.

8882 msseq result: 2500637773seq duration: 1.

702 mssync result: 2500637773sync duration: 3.

6255 ms我用宇宙第一IDE跑了下,或許這裡是原因?

左側執行緒右側async

為什麼畫家的藝術成就似乎比攝影家高?

king刂氵 這個簡單,因為攝影是繪畫的真子集。攝影能做到,人也能畫,人能做的,很多攝影做不到。例如趙無極,傑克遜的抽象畫,梵谷的畫尤其是梵谷的筆觸,塞尚的蘋果,甚之連莫奈的半寫實的風景畫的光的感覺攝影都難以實現。 睡眠科學 繪畫在很多方面要比其他的雕塑攝影什麼的要發展得更快一點,比方說繪畫就比雕塑...

似乎粵語使用者比吳語使用者更加堅持,為什麼?

小果 如果從小接受了正規的義務教育,好好學習,都能把普通話說好,除非某個區域的人集體不愛學習,說不明白普通話,因為自卑,所以就盲目的守著。 人都這樣,在會講的語言中挑最不土的講。誰讓本地人不努力,輸給外地人,不過人家也是不是猛龍不過江啦。外地人也有方言,不過人家在這裡肯定只講普通話啊。 粵語以廣州為...

為什麼有神論者似乎比無神論者更讓人尊重?

受害者名錄 因為大部分有神論者會以各種方式告訴大家自己的宗教信仰。比如各種掛墜,某種顏色不一樣帽子,每天好幾遍的儀式等等。他們通過這種方法增加了自己在人群中的存在感而無神論者很少會去宣揚自己是無神論者 M.sir 不多說理論,拿經驗說,因為課程原因讀北斗經49天,每次需要辦個小時以上,讀完以後就覺得...