honeyaaa
   
發文: 159
積分: 0
|
於 2008-05-06 23:52
     
Duncan wrote: 假如不考慮 multi-task 操作在 OS 層面的額外成本,multi-task 去執行一個任務會不會比單一 task 來作來的快,還得看 I/O 或更廣義地說是 resource 的使用情形。
比如說,假如一定要用洗衣機洗衣服,在只有一台洗衣機(resource, I/O)的情況下,一個人洗 50 份衣物(假設一台洗衣機的負載剛好是一份衣物),跟 50 個人同時並進來洗自己所持有的一份衣物,何者會比較快完成 50 份衣物的清洗?假如衣物是用手洗呢?
我自己的最原意,不考慮其他OS和Network的狀況,那執行多執行緒的意義是在於排程依序的執行task,用意是不會將花費集中再某一個process上。 就好比您舉例的洗衣服來說,假如說1件1件洗和同時開始洗50件理論上會是一樣。但是我們再加上脫水的時間,當你一件一件做從准備洗衣-洗衣-脫水 再換下一件衣服反覆,和你同時開始洗50件衣服,一次準備好洗衣-洗1件衣服-脫水-利用脫水的時間在洗下1件,我想,multi-Thread最主要的時間就是會快在可在洗衣服的同時,還能脫水,但是並不會真的快到50倍的效率。
 
努力,是成功唯一的途徑。
|