青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0
一次關于旨在降低編譯時間的整改工作(vc++)
[轉自]天爬者


由于工程的文件的日益龐大和第3方庫(ACE Loki Boost等等)的使用增多
我所工作的項目系統構建時間從最初的3分鐘變為現在的8分鐘
程序員的機器配置已經很不錯了,3。0 的主頻1g的內存,但是常常由于一個小的修改導致5分鐘甚至更長的編譯時間來驗證效果。

按照《Joel on software》的說法,其直接后果是可怕的:
程序員們在這8分鐘內無所事事,只有查看網頁,或者qqmsn,打斷先前的思路從他們的上下文環境里面脫離了出來,離開了“順勢工作時間”,等到他們編譯好了驗證再修改的時候,他們又得花不少的時間來回到剛才的思路

“順勢工作時間”大致意思就是說2個不連續的半小時的效果遠不如一個連續沉浸的1小時的工作效果,如果一個人不能連續沉浸的思考,那么他就很可能陷入在不停的上下文環境切換和淺表思考當中。人的多線程處理和機器是一樣的環境的切換不能夠不考慮

所以,在當前機器配置已經沒有什么提升空間的情況下,我在項目組內部組織了一次整改活動,旨在降低編譯構建時間


1。目標:將完全重新編譯時間從8分鐘降低到4分鐘以下
2。原則:通過和主程序的溝通,并參考了《C++ coding Standards》出了一下幾條整改原則:
?????首先是關于include的,因為包含頭文件相當于將代碼復制到本文件來編譯,而頭文件又經常是用來被別人包含的,所以工程文件多了,每個文件都有include鏈(包含的文件又include了其他文件),該鏈條不會止步于你工程,而會延伸到你所有使用的第3方庫里面

?????A.
能夠去掉的include就去掉。

?????B.能夠在cpp
里面include的頭文件不要在頭文件里面include。
?????
說明:盡量去掉每個cpp會被串起來的頭文件膨脹的機會

?????
C.能夠用前向聲明的就不要include,頭文件里面也是一樣
???? 說明:在頭文件里面用前向聲明然后保存指針或者引用,在具體實現的cpp里面再包含頭文件,雖然看起來和《C++ coding Standards》“
Make header files self-sufficient ”有些沖突(前兩天另外cppblog一位朋友講過 http://m.shnenglu.com/flyingxu/archive/2006/06/23/8908.html )但是在一些核心的.h(被很多類include的)里面作改造工作,還是能夠收到很大的降低編譯時間效果,而付出的代價就是原來只需要包含該頭文件就可以編譯成功的cpp需要額外包含一些頭文件。

舉個例子: Foo類頭文件使用了前向申明保存了A類和B類的指針或者引用為成員變量,在Foo類的cpp里面才包含A和B的頭文件,而當C類需要使用Foo類時候包含Foo類的頭文件,但是操作中又需要調用A的成員函數,C不同時包含A的頭文件的花就會出現編譯失敗。

雖然表面上是讓代碼更加復雜了,但是除卻帶來降低編譯時間的好處之外,代碼也在強迫你進行解耦合,如果說你cpp里面需要包含的頭文件越多,說明你這個類需要知道的對象就越多,你可以乘機檢查一下自己的代碼又沒有不必要的耦合,為什么這個cpp需要知道那么多的本來可能屬于別的類的細節.....

??????D。
把大多數模塊都要使用的庫文件或者穩定類的頭文件include放到預編譯頭文件“stdafx.h”里面
??????
說明:由于預編譯頭文件里面include的內容只會compile一次而被link多次,把一些常用類放到這里會降低很多編譯時間,但也不能亂來,要點在于 “大多數”和“穩定”,如果一個頭文件經常變化,他的一次小改動都會引起整個工程rebuild,哪怕只是一個注釋,因為所有的cpp文件都包含了stdafx.h而stdafx.h又包含了這個容易變動的頭文件。
??????
??????
E.使用Pimpl慣用法
??????說明:關于Pimpl大家可以查下資料,《C++ coding Standards》里面也有講解,基本上就是采用一個私有的前向申明的stuct指針把所有protect成員都封裝起來起來.基本上是一個最終極的解決方案,但是對我們現有架構改造太大,不敢全面實行,我們只選擇了數個最有價值的類進行了改造,打算以后在其他項目里面再全面應用。

3。實施: 通過半個小時的溝通,讓項目組程序員了解原則,并采取結隊修改的方式來降低引入新bug的風險,在以通過原有單元測試用例的條件下,進行修改-測試-提交的迭代。
???

4。結果:???編
譯時間降低到了6分鐘以內。。。雖沒有達到預期,但也算有效果,沒有完全達標的主要原因還是沒有完整的測試方案包括單元測試和驗收測試,怕有些改動過大影響系統健壯性,局部放棄了一些實施的原則。


把這個整改的工作寫出來,一方面作個記錄,另外一方面希望和大家討論,相互多多交流:)
posted on 2006-07-04 03:38 Jerry Cat 閱讀(535) 評論(1)  編輯 收藏 引用

FeedBack:
# re: 一次關于旨在降低編譯時間的整改工作(vc++)
2007-07-09 14:18 | NDD
上述措施只能在合理范圍內解決rebuild時間長的問題

使用Distcc 或者 Incredibuild 增加計算能力可以克服文件的正常增加  回復  更多評論
  

<2006年9月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用鏈接

留言簿(7)

隨筆檔案

最新隨筆

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲免费在线精品一区| 小黄鸭视频精品导航| 亚洲国语精品自产拍在线观看| 美女精品网站| 久久精品欧美日韩| 香蕉国产精品偷在线观看不卡| 中日韩美女免费视频网址在线观看| 亚洲第一偷拍| 亚洲国产成人午夜在线一区| 亚洲大胆在线| av成人手机在线| 久久精品人人| 欧美日韩亚洲不卡| 国产片一区二区| 亚洲欧洲精品一区二区精品久久久| 亚洲区第一页| 欧美一区二区高清在线观看| 美女成人午夜| 国产精品久久久久久久久久ktv| 国产精品网站一区| 亚洲国产精品第一区二区| 亚洲精品久久久久久久久久久久| 亚洲免费在线电影| 农村妇女精品| 久久久久成人精品| 欧美日韩另类在线| 亚洲高清免费| 美女精品视频一区| 欧美亚洲综合网| 国产精品视频成人| 亚洲一区二区三区视频| 91久久一区二区| 久久免费精品日本久久中文字幕| 国产精品a久久久久久| 伊人久久亚洲热| 久久精品国产999大香线蕉| 欧美寡妇偷汉性猛交| 一道本一区二区| 欧美日韩美女一区二区| 一区二区电影免费在线观看| 亚洲第一级黄色片| 欧美成人福利视频| 亚洲精品在线二区| 91久久香蕉国产日韩欧美9色| 麻豆91精品91久久久的内涵| 亚洲国产精品一区二区尤物区| 久久国产色av| 久久深夜福利免费观看| 久久国产66| 一区免费观看视频| 亚洲激情精品| 国产精品一区视频网站| 欧美在线精品一区| 欧美成人一区在线| 欧美一区二区三区的| 欧美国产三区| 久久综合激情| 欧美激情片在线观看| 亚洲国产专区| 欧美黑人在线观看| 日韩午夜视频在线观看| 亚洲主播在线观看| 亚洲精品国产精品国自产在线| 99视频精品在线| 亚洲国产精品一区二区三区| 亚洲一区二区三区免费观看| 在线免费观看日本欧美| avtt综合网| 亚洲精品国产精品乱码不99按摩 | 欧美精品久久久久久| 久久男女视频| 国语自产精品视频在线看抢先版结局| 亚洲精品免费在线观看| 在线成人中文字幕| 欧美一区二区三区在线| 欧美电影免费观看高清| 亚洲国产一区二区三区a毛片| 久久久亚洲人| 亚洲高清免费| 一区二区三区欧美视频| 欧美色网在线| 久久9热精品视频| 最新国产乱人伦偷精品免费网站| 艳妇臀荡乳欲伦亚洲一区| 夜夜爽99久久国产综合精品女不卡| 国产精品护士白丝一区av| 午夜精品久久一牛影视| 欧美日韩国产综合网| 欧美69视频| 欧美日韩国产色视频| 国产精品swag| 欧美日韩精品免费观看视一区二区| 亚洲中无吗在线| 一本久道久久综合婷婷鲸鱼| 亚洲欧美综合一区| 亚洲色在线视频| 国产欧美日韩激情| 国产精品av免费在线观看| 亚洲免费小视频| 一区二区三区精品| 一卡二卡3卡四卡高清精品视频 | 国产亚洲一本大道中文在线| 久久精品人人做人人综合| 亚洲国产精品一区制服丝袜| 欧美永久精品| 99精品久久久| 一区二区av在线| 国内伊人久久久久久网站视频| 国产精品国产福利国产秒拍| 欧美岛国激情| 免费人成网站在线观看欧美高清| 久久av一区二区三区亚洲| 性色av一区二区三区在线观看| 亚洲精品日本| 亚洲第一区在线观看| 欧美国产视频日韩| 亚洲精品护士| 亚洲精品欧洲| 性色av一区二区三区| 久久夜色精品亚洲噜噜国产mv| 亚洲欧美日韩中文播放| 一本一道久久综合狠狠老精东影业 | 国产毛片久久| 欧美日韩日本网| 国产精品久久久久aaaa樱花| 国产亚洲人成a一在线v站| 欧美网站在线观看| 欧美日韩一区二区三区免费看 | 久久久xxx| 久久久久国产精品午夜一区| 美腿丝袜亚洲色图| 国产精品美女主播在线观看纯欲| 国产精品综合久久久| 亚洲国产精品t66y| 欧美一区深夜视频| 99精品国产高清一区二区| 久久久国产一区二区三区| 欧美人牲a欧美精品| 国产一区二区在线观看免费| 亚洲三级视频| 久久久一二三| 在线亚洲免费| 欧美成人免费观看| 在线观看精品视频| 亚洲欧美激情在线视频| 亚洲激情电影在线| 老司机午夜免费精品视频| 好吊日精品视频| 久久九九精品99国产精品| 亚洲一区一卡| 国产尤物精品| 欧美成人午夜免费视在线看片| 亚洲午夜影视影院在线观看| 欧美屁股在线| 夜夜狂射影院欧美极品| 日韩视频在线一区二区| 久久久久久亚洲综合影院红桃| 亚洲国产专区| 欧美日韩高清不卡| 日韩手机在线导航| 亚洲精选在线| 欧美性生交xxxxx久久久| 亚洲特色特黄| 国产在线欧美日韩| 亚洲剧情一区二区| 国产精品拍天天在线| 久久久久久久久一区二区| 性色一区二区| 亚洲一品av免费观看| 欧美一级夜夜爽| 亚洲精品久久久久| 亚洲在线免费视频| 日韩亚洲成人av在线| 亚洲女爱视频在线| 中文在线资源观看网站视频免费不卡 | 国产亚洲美州欧州综合国| 久久在线播放| 国产麻豆9l精品三级站| 亚洲激情婷婷| 亚洲福利一区| 久久国产精品一区二区三区| 9l国产精品久久久久麻豆| 久久久国产精彩视频美女艺术照福利 | 亚洲欧美色婷婷| 99伊人成综合| 欧美黄色成人网| 欧美亚洲自偷自偷| 国产精品久久久对白| 美女网站久久| 国内精品久久久久久久影视麻豆| 99re视频这里只有精品| 亚洲激情在线激情| 蜜臀av国产精品久久久久| 久久久国产精品一区二区中文| 欧美三区在线观看| 日韩午夜av在线| 亚洲欧美综合一区| 亚洲制服少妇| 性色av一区二区三区红粉影视| 欧美日韩一区二|