1樓:
手機上簡單回答一下,這明顯是作業題嘛,作業題極大地簡化了問題。
既然這道題是考試或者作業題,答案當然是多執行緒會快,而且最佳答案應該是5執行緒。
當然實際情況不一樣。經驗來說我用Mac Pro的Xeon 6核編譯,大工程-j12速度最快。當然不能一概而論。
2樓:Chen
如果原始檔之間沒有dependency
乙個乙個compile更快,時間是(100+compile_time)*n
如果使用並行,會增加不必要的context switch,時間是(100+compile_time+20*m)*n,m為平均context switch 次數
如果檔案之間有dependency
並行在通常情況下更快
試想有兩個檔案A,B,且A depend on B先compile B,花費100,此時context switch到A,compile A
並行總花費2*(100+compile_time)+20如果使用單執行緒
compile B
compile A,遇到dependencyload B again
compile A
總花費 100 * 3 + compile * 2
3樓:「已登出」
拋磚引玉了。
在我看來,如果你編譯的不是C++,實踐中一般就不考慮這個問題。意義不是很大,通常來說編譯時間都能接受。
如果是C++,會有幾個瓶頸,比如CPU,磁碟等等。
純經驗來說,100個circle到記憶體取一次資料都不夠,那我看成你用記憶體當成"磁碟"好了。
如果本身使用了大量模板,需要展開,那麼顯然cpu會是滿速,而記憶體瓶頸沒有達到。顯然這樣單程序編譯會更好。
如果沒有使用大量模板,編譯的瓶頸通常不在cpu,記憶體頻寬會飽和,造成cpu總是在等資料。這樣其實也沒有啥好辦法,因為CPU的記憶體頻寬總是有限的。(locality低多檔案編譯只會更低)
綜上,我認為不論哪種情況,都應該選擇單u單檔案,和context switch無關。
單核cpu可以跑超執行緒嗎
Caspar Cui 可以。Pentium4 3.06GHz 這就是乙個 也是首批 支援HT技術的CPU。超執行緒是一種把乙個處理器模擬為兩個處理器使用,這樣能有效地利用和分配資源,達到提高整體效能的目的的技術。缺點是因為將乙個核心的cache分成兩份 可能還不等 會增加cache不命中的概率。多核...
java多執行緒在單核CPU上,還是需要volatile synchronized嗎?
Jinglei 需要Thread有logical thread和physical thread 單核cpu不一定只有乙個執行緒 JVM做了執行緒標準化遮蔽了執行緒細節 每個執行緒都有各自的stack 有context switch所以還是需要同步的 gavin synchronized的乙個語義是防...
為什麼不把CPU多核心合併為單核心呢
dontpanic 老闆,我們招不到智商 800 的員工啊,因為這世上根本沒有這樣的人 不行的,我們沒辦法把 8 個員工合併成乙個智商 800 的超人 真的不行,400 也不行 這個問題其實挺有代表性的,代表了一類問題 分不清頻寬和效能 速度 還是舉我經常舉的高速道路的例子。假設有一條北京到上海的高...