it6168 wrote:
跑分程式畢竟不是一般...(恕刪)
你可以這樣理解:
如果app設計良好像跑分程式一樣,它就能發揮全部多核的功能。雖然大部份的程式不能達到這樣的效果,但大型且又耗時的app應該是要能做到接近跑分程式的效果。
當然了,你想的並沒錯。如果某雙核機器的跑分與某8核機器跑分一樣。那麼在大多數應用會是雙核機比8核機快。8核機只有在少數app能與雙核機一樣快,而比雙核快是絕無可能。
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
90750 nobody 1 20 0 429M 40996K accept 7 0:13 0.98% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 20 0 429M 40996K accept 0 0:13 1.56% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 21 0 429M 40996K accept 4 0:13 1.95% php-fpm
ken73chen wrote:
我沒有寫 app,不過不管 ios 或 android,都是類 unix 的東西,跑起來原理應該差不多,很大的差異應該就在排程器 (scheduler) 的不同。
然後,一個程式可以是多線程 (multi-processes) 或者多執行序 (multi-threads),或者單線程但是多執行序,或者多線程也多執行序,當然也有單線程、單執行序。
但無論如何,一個 process 或者一個 thread,不會從頭到尾都占用同一個 CPU,大概是要用到 CPU 的時候,要透過 scheduler 安排,兩個 CPU (可能是真的兩個,或者雙核心) 會跑得比四個快嗎?
假設你兩個核心剛好都被 block,那時候有第三個核心,速度當然就比較快了,等到 ios 真多工的時候,兩個核心同時被 block 的機會應該就多很多。
以下是一個例子,同一個 PID 的東西,每次跑都用到不同的 CPU,那個 7、0、4 就是用到的 CPU:
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
90750 nobody 1 20 0 429M 40996K accept 7 0:13 0.98% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 20 0 429M 40996K accept 0 0:13 1.56% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 21 0 429M 40996K accept 4 0:13 1.95% php-fpm
不考慮太多變數的話,多 CPU (多核心) 當然會跑比較快,就像電影院的售票口,一般的狀況下,開 4 個當然就比只開 2 個快。...(恕刪)