<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 二十三、任務換人有害無益 在管理一個程序團隊時,第一件要學的事就是任務配置(task allocation)要正 確。「任務配置」只是把事倩分丈家微的夸大說法。用希伯來文的普通話來 說就是「倒檔案」(因為你會把檔案倒在某人身上)。有些事情做得對會得到不可 思議的生產力利益,決定哪些檔案要倒在誰身上就是其中之一。反過來沒做好 的話可能就會陷入麻煩的狀況,沒有人能做好何任何事情而且大家都抱怨「在這 里什么事都做不起來。」 由于這是個針對程序員的網站,我要拿個程序設計問題讓你的腦袋動一動暖暖身。 假設你要做A和B兩件運算要做。每一件都需10秒的CPU時間。現在你有一顆CPU, 為了簡化問題,所以工作序列中沒有其他東西。 在我們的CPU中可以選擇是否用多任務處理。所以你可以先做好一件再做另一件。 循序處理 ![](https://box.kancloud.cn/2015-12-28_5681031e638dc.png) 也可以使用多任務方式。如果用多任務的話可以假設這顆特別的CPU每個工作每 次可以執行一秒,而且工作切換完全不花時間。 多任務處理 ![](https://box.kancloud.cn/2015-12-28_5681031e777fa.png) 你會選哪一種方式呢?大部份人的直覺反應都認為多任務比較好。不管哪一種狀 況,都得等20秒才能兩件運算都完成。不過可以想想單就各洋運算來說要多久才 有結果。 在兩種狀況下,運算B(標成藍色)都要20秒才得到結果。不過運算A的結果在多任 務時需要19秒。可是循序時就只要10秒就好了。 換句話來說在這個安排好的例子中,循序處理的每洋運算游f均對/琢比多任務處 理少(15秒對19.5秒)。(事實上這例子也并不是真的那么假–它是源于Jared在工作中必須解決的一個真實問題) | 方法 | 運算A花的時間 | 運算B花的時間 | 平均 | | --- | --- | --- | --- | | 循序處理 | 10秒 | 20秒 | 15秒 | | 多任務處理 | 19秒 | 20秒 | 19.5秒 | 我剛剛說過「工作切換完全不花時間」。其實在真的CPU中工作切換是需要一點 點時間的,基本上要足夠儲存CPU緩存器的狀態并加載其他工作的CPU緩存器。實 際上這短到幾乎可以忽略。不過為了讓生活更多樂趣,讓我們假設工作切換需要 半秒。現在情況變得更糟了: | 方法 | 運算A花的時間 | 運算B花的時間 | 平均 | | --- | --- | --- | --- | | 循序處理 | 10秒 | 20秒 + 1次工作切換 = 20秒 | 15.25秒 | | 多任務處理 | 19秒 + 18次工作切換 = 28秒 | 20秒 + 19次工作切換 = 29.5秒 | 28.75秒 | 現在呢,雖然我知道這有點蠢,不過就算為了讓我高興一下,想想如果工作切換需要一分鐘那如何? | 方法 | 運算A花的時間 | 運算B花的時間 | 平均 | | --- | --- | --- | --- | | 循序處理 | 10秒 | 20秒 + 1次工作切換 = 80秒 | 45秒 | | 多任務處理 | 19秒 + 18次工作切換 = 1099秒 | 20秒 + 19次工作切換 = 1060秒 | 幾近19分鐘!! | 工作切換用的時間愈長,多任務處理的代價愈大。 這件事本身不怎么新奇,不是嗎?不久大概就會有些白癡氣憤地寫信指控我「反 對」多任務處理了。他們會質問我:「你真的想要回到那種得先結束WordPerfect 才能執行Lotus 1-2-3的DOS時代嗎?」 不過那并不是我的意思。我只是想要你同意,在這類例子中: a)循序處理會讓結果次上比較快得到,而且 b)工作切換需要愈久,多任務處理所付的代價就愈大。 夠了,別管CPU 了,來管管人吧,這有趣多了。這里的重點在于管理「程序員」 時,工作切換會需要很長很長的時間。因為程序設計這種工作必須同時在腦袋 里記很多東西。另外記住的東西愈多,寫程序時生產力愈高。用全速寫程序的程 序員腦里隨時都會記住無數的事情:變量名稱,數據結構,重要的API,寫過常要 用到的輔助函數名稱,甚至存放原始碼的次目錄名稱,一切東西都要記住。如果 你把程序員送到克利特島去度假三星期,他所存東西通通都會忘掉。人腦似乎會 把東西移出短期RAM,改存到永遠都讀不回來的備份磁帶上。 要多久呢?嗯,我的軟件公司最近放下手頭上在做的事(開發一套代號CityDesk 的軟件產品),花了三星期去幫助某個客戶處理一個緊急狀況。當我們回到辦公 室時,感覺好像要另夕A三星期才能回復全速制作CityDesk。 就個人層次來說,你曾經注意過某件事嗎?叫某人做一個工作可以做得很好,可 是如果給他兩個工作,他會把其中一個做好卻忽略另一個,不然就是兩件工作都 做得很慢,慢到你覺得#龍蜜都比他勤勞。這是因為程序設計的工作就是需要很長 的切換時間。就我自己來說,當我需要同時完成兩個程序設計項目時,切換時間 大概要六個小時。以一天八小時來看,等于說多任務處理把我的生產力降到每天 只剩二小時。真令人沮喪啊。 同樣的道理,如果你給某人兩件工作,應該要感謝他們只做一件工作而放棄 另一件,因為這樣能做好更多的事,而且平均上也能更快完成工作。事實上這一 切的重點就是絕對不要讓人同時做一件以上的事。請確定你有明白它的意思。好 的經理人會認為自己的責任是濟餘摩濤,好讓大家都能專注在一#事倩并把它真 的完成。遇到緊急狀況時,請先想想能不能自己處理掉,真的不行再丟給深陷在 專案中的程序員吧。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看