電腦核數和線程都是指那方面?
先說結論:如果是“12核12線程”或者“14核14線程”與“10核20線程”比,可能我會選擇“10核20線程”。但如果是“16核16線程”,不考慮價格的情況下,建議選擇“16核16線程”。
核與線程的關系,其實是hardware resource和worker的關系,核數就是生產所需的工具集合(某些工具在這個集合里面只有一套,某些有好幾套),線程數是能夠運用這些工具的工人數量。用一個奇妙的比喻來說明一下:
有兩個一樣的礦場,每個礦場都是80資源,分別采用“16核16線程”和“10核20線程”的工作模式,設每個工人使用一套工具每小時可以產生1資源,每個工人亦可以花費1小時將資源運送出去(無需工具)。則
礦場1:16個工人使用16套工具挖礦,5小時完成挖礦工作,之后16個工人花費5小時完成運輸工作,花費總時間為80/16 + 80/16 = 10小時。
礦場2:10個工人使用10套工具挖礦,另外10個工人待第1個小時過去后第一份資源產生可以開始運輸工作,花費總時間為80/10 + 1 = 9小時。
在這個場景里面,經過優化的礦場2雖然耗時更短,但是在實際應用中有一定限制:1.需要多種不同的任務類型作為輸入;2.較好的流水或并發模型。在單一任務(挖礦或運輸)的情況下,前一種工作模式的優勢很明顯。
當然,實際應用中各個資源之間的關系不會像例子里面簡單明了,資源(工具)在一個CPU里面可能有多個,總體帶寬可能達到上限導致多核心數據傳輸優勢不能體現等等。
下一篇左頂格對齊