我編寫了兩個(gè)程序,它們使用黎曼和來計(jì)算具有一定數(shù)量矩形的函數(shù)的面積,一個(gè)是用 Go 編寫的,另一個(gè)是用 C++ 編寫的。目標(biāo)是測量執(zhí)行時(shí)間并查看哪種語言在多線程上更快。我使用 bash script4 在 32 核服務(wù)器(雙英特爾至強(qiáng))上運(yùn)行該程序,以使用 1、2、4、8、16 和 32 個(gè)線程運(yùn)行它。該腳本用于time --format %U獲取執(zhí)行時(shí)間。但是正如您在使用 1 個(gè)內(nèi)核運(yùn)行 Go 版本的結(jié)果中所看到的那樣,使用 32 個(gè)內(nèi)核運(yùn)行 Go 版本需要 1.69 秒!我認(rèn)為使用更多內(nèi)核會(huì)使計(jì)算速度更快......我在編寫程序時(shí)出錯(cuò)了嗎?時(shí)間的測量準(zhǔn)確嗎?或者也許結(jié)果很好,但如何?預(yù)先感謝您的回答!
1 回答

慕尼黑5688855
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
根據(jù)man time
:
U 進(jìn)程直接(在用戶模式下)使用的 CPU 秒總數(shù),以秒為單位。
您正在測量 CPU 秒,即每個(gè) CPU 累計(jì)花費(fèi)的時(shí)間,而不是“掛鐘”秒。此度量不會(huì)因附加線程而下降,因?yàn)樗c恒定的工作量成正比。另一方面,這可能會(huì)隨著線程數(shù)量的增加而增加,因?yàn)槊總€(gè)新線程都會(huì)產(chǎn)生一些額外的簿記。
如果要列出“實(shí)時(shí)”時(shí)間,請使用%e
說明符。
- 1 回答
- 0 關(guān)注
- 297 瀏覽
添加回答
舉報(bào)
0/150
提交
取消