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

2006年7月3日

由于工程的文件的日益龐大和第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分鐘以內。。。雖沒有達到預期,但也算有效果,沒有完全達標的主要原因還是沒有完整的測試方案包括單元測試和驗收測試,怕有些改動過大影響系統健壯性,局部放棄了一些實施的原則。


把這個整改的工作寫出來,一方面作個記錄,另外一方面希望和大家討論,相互多多交流:)


ps:
希望有過類似工作的朋友加我的
MSN:itso2_at_msn.com
大家多多溝通
posted @ 2006-07-03 15:43 天爬者 閱讀(1390) | 評論 (4)編輯 收藏

2006年5月23日

公司有一個項目從vs2003移植到vs2005之后老是出現runtim erro
經過排查最終定位在fstream 打開"含中文路徑"的文件時候會出現fail的情況
本來不相信vs2003過渡到2005會有這個問題,但是經過試驗確證實了該問題
我新建立一個exe來測試該問題

?1#include?"stdafx.h"
?2#include?"testiostream.h"
?3#include?<string>
?4#include?<fstream>
?5
?6
?7BEGIN_MESSAGE_MAP(CtestiostreamApp,?CWinApp)
?8END_MESSAGE_MAP()
?9
10CtestiostreamApp::CtestiostreamApp()
11{
12}

13
14CtestiostreamApp?theApp;
15
16BOOL?CtestiostreamApp::InitInstance()
17{
18????CWinApp::InitInstance();
19????std::ifstream?iput;
20????iput.open("F:\\中文.txt");
21????ASSERT(!iput.fail());
22????return?FALSE;
23}

vs2003不需要作任何設置就可以就可以成功
但是vs2005下每次都會失敗在斷言處,查找了一些網上資料,例如
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=371229&SiteID=1
發現但凡是uinicode的路徑都是有該問題的.
解決方法有2個
1.第一個使用vs2005默認的unicode set并在所有字符串外面面加上_T() 或者_TEXT宏,代價是原來所有不符合unicode規范的地方你都必須得改.
2.使用not set 或者"mutibyte set" 并在程序初始化的時候調用setlocale()如下

BOOL?CtestiostreamApp::InitInstance()
{
?????setlocale(LC_ALL,
"Chinese-simplified");
????CWinApp::InitInstance();
????std::ifstream?iput;
????iput.open(
"F:\\中文.txt");
????ASSERT(
!iput.fail());
????
return?FALSE;
}
就可以解決該問題

上述引用的ms論壇連接基本講清楚了該問題,但是由于我前幾日搜索中文相關信息時候,實在未發現有用之內容,故記錄下來,希望有相同問題又不思其解的朋友可以少花點時間.
posted @ 2006-05-23 08:49 天爬者 閱讀(3978) | 評論 (3)編輯 收藏

2006年5月18日

最近研究自動化構建系統(持續集成),最終發現finalbuilder十分之好用

根據網上

http://blog.dream4ever.org/dirt/archive/2005/12/20/79946.drl?

這篇文章,初步作了一個 由subversion 的post-commit 觸發的自動更新所有相關代碼編譯,并把編譯結果以及信息發送給相關人員的郵件的finalbuilder工程,目的是期望所有程序員能夠養成一種提交可編譯代碼的習慣,

其中需要用到一種叫做 subversion info 的action 類型, 其原理大概是調用 subversion/bin 里面的 svn.exe 加上參數 info 然后從標準輸出中匹配相關信息取得特定數據放到 指定的變量中,但是其action始終不能執行成功,更別提保存我需要的變量了.

經過一系列試驗,估計是由于svn在中文操作系統上返回的是類似下面的中文信息

C:\Program Files\Subversion\bin>svn info D:\LocalSvnForDailyBuild\dest
路徑:D:\LocalSvnForDailyBuild\dest
地址(URL):http://192.168.1.100:3115/dest
Repository Root: http://192.168.1.100:3115/dest
檔案庫 UUID:47b214da-b8ec-df4b-aac3-16e2c895fbbd
修訂版:666
節點種類:目錄
調度:正常
最后修改的作者:medicer
最后修改的修訂版:666
最后修改的時間: 2006-05-18 11:58:03 +0800 (星期四, 18 五月 2006)
屬性最后更新: 2006-05-15 10:41:52 +0800 (星期一, 15 五月 2006)

而finalbuilder期望的估計是英文的輸出,所以匹配不了導致失敗

經過幾番試驗

最后把subversion 目錄 C:\Program Files\Subversion\share\locale\zh_CN\LC_MESSAGES\subversion.mo 文字信息文件刪除掉后,svn返回都使用了默認的英文,而finalbuilder也終于運行成功, 最后一次提交者提交時間都能夠正常取到!

沒有什么技術含量,只是在這里記錄下來,希望遇到相同問題的朋友可以搜索得到,不用再折騰?

posted @ 2006-05-18 14:29 天爬者 閱讀(1847) | 評論 (2)編輯 收藏
僅列出標題  
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            中日韩男男gay无套| 在线观看三级视频欧美| 激情小说亚洲一区| 欧美高清成人| 久久精品官网| 午夜性色一区二区三区免费视频| 亚洲国语精品自产拍在线观看| 亚洲激情av| 国产视频精品xxxx| 欧美日韩亚洲综合在线| 欧美va天堂在线| 欧美波霸影院| 欧美成人日韩| 女生裸体视频一区二区三区| 久久久国产午夜精品| 欧美尤物巨大精品爽| 午夜视频在线观看一区二区三区 | 正在播放亚洲一区| 91久久综合亚洲鲁鲁五月天| 在线播放中文字幕一区| 伊人精品视频| 亚洲第一在线综合网站| 亚洲激情综合| 一区二区精品在线| 亚洲一区二区在线看| 亚洲制服少妇| 久久精品夜色噜噜亚洲a∨| 久久久亚洲综合| 欧美国产另类| 亚洲日韩欧美一区二区在线| 亚洲精品在线视频| 欧美激情亚洲视频| 99这里只有久久精品视频| 亚洲神马久久| 久久网站免费| 亚洲黄色影片| 亚洲国语精品自产拍在线观看| 欧美国产日韩在线观看| 亚洲精品国产精品国自产观看浪潮| 亚洲中无吗在线| 香港久久久电影| 在线精品视频一区二区| 亚洲精品日韩久久| 欧美一级片久久久久久久| 另类国产ts人妖高潮视频| 久久久久**毛片大全| 欧美国产亚洲视频| 一区二区欧美精品| 久久久亚洲午夜电影| 欧美欧美午夜aⅴ在线观看| 国产精品日本| 亚洲高清精品中出| 午夜久久影院| 亚洲国产欧美一区| 西瓜成人精品人成网站| 欧美激情四色| 国内一区二区三区在线视频| 最近中文字幕mv在线一区二区三区四区 | 亚洲精品国产精品乱码不99 | 亚洲免费高清视频| 亚洲摸下面视频| 欧美一区国产一区| 国产亚洲欧洲一区高清在线观看| 黄色国产精品| 亚洲一区免费看| 亚洲黄色免费网站| 欧美四级在线观看| 99re8这里有精品热视频免费| 精品不卡在线| 亚洲国产色一区| 国产精品一二| 99re在线精品| 国产噜噜噜噜噜久久久久久久久| 在线视频你懂得一区| 亚洲第一狼人社区| 国产欧美日韩一区二区三区在线观看| 亚洲影视在线播放| 久久国内精品视频| 亚洲一区欧美激情| 欧美精品18+| 蜜桃av噜噜一区| 欧美视频不卡中文| 鲁大师成人一区二区三区 | 欧美日韩精品高清| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美三级欧美一级| 欧美成人视屏| 亚洲国产精品久久精品怡红院| 欧美日韩一区二区三区在线观看免| 麻豆精品精品国产自在97香蕉| 国产精品九色蝌蚪自拍| 一区二区三区久久| 欧美激情一区二区三区| 久久美女性网| 国产伦精品一区二区三区免费迷 | 欧美成人一区在线| 亚洲激情视频网| 国产精品视频1区| 99亚洲伊人久久精品影院红桃| 99在线视频精品| 国产午夜精品全部视频播放| 久久精品国产一区二区电影| 欧美成人性生活| 午夜精品www| 亚洲国产精品久久久| 欧美高清影院| 久久久水蜜桃| 亚洲制服av| 一本色道久久综合亚洲91| 久久美女性网| 欧美在线视频一区| 亚洲欧美一级二级三级| 亚洲精品视频在线播放| 激情综合自拍| 国产主播一区二区| 国产日韩视频| 国产精品视频免费观看www| 欧美乱人伦中文字幕在线| 美脚丝袜一区二区三区在线观看 | 在线观看视频免费一区二区三区| 国产精品扒开腿做爽爽爽软件| 欧美国产日韩亚洲一区| 欧美夜福利tv在线| 日韩视频在线观看国产| 亚洲国产一区二区在线| 国模精品一区二区三区| 国产精品久久久久久久久借妻 | 亚洲天堂av在线免费| 久久理论片午夜琪琪电影网| 蜜桃久久av一区| 欧美一区精品| 国产自产精品| 久久久久久久999| 久久午夜精品一区二区| 亚洲欧美日韩爽爽影院| 国产精品激情| 香蕉久久精品日日躁夜夜躁| 99国产一区二区三精品乱码| 欧美日本网站| 亚洲女同在线| 在线亚洲观看| 亚洲欧美制服另类日韩| 亚洲激情av| 久久久噜噜噜久久狠狠50岁| 欧美日韩综合不卡| 1024国产精品| 久久国产精品色婷婷| 亚洲蜜桃精久久久久久久| 久久福利视频导航| 国产精品一香蕉国产线看观看 | 亚洲欧洲一区| 久久亚洲视频| 久久裸体艺术| 精品成人国产| 欧美91精品| 欧美精品久久天天躁| 亚洲视频电影在线| 狠狠色狠狠色综合人人| 亚洲免费一在线| 欧美一级欧美一级在线播放| 国产精品女主播一区二区三区| 午夜视频精品| 久久久久99| 亚洲毛片在线| 亚洲欧美激情一区| 欧美日韩一区二区三区免费| 欧美高清视频一区二区三区在线观看| 欧美性淫爽ww久久久久无| 欧美日韩一区在线播放| 国内成+人亚洲| 亚洲图片欧美午夜| 久久aⅴ国产紧身牛仔裤| 久久亚洲精品一区二区| 久久久天天操| 亚洲欧美卡通另类91av| 亚洲尤物视频网| 亚洲国产精品电影| 亚洲午夜精品久久久久久浪潮| 久久国产视频网| 国产精品第2页| 亚洲免费成人| 亚洲欧美视频在线观看视频| 美女啪啪无遮挡免费久久网站| 久久国产主播| 亚洲在线观看免费| 欧美岛国激情| 欧美电影在线| 好吊色欧美一区二区三区四区| 亚洲国产视频直播| 伊人成人在线视频| 午夜在线观看免费一区| 一个色综合av| 欧美日韩国产一区精品一区| 麻豆久久婷婷| 国产一级揄自揄精品视频| 亚洲欧美日韩综合| 欧美一区在线视频| 国产婷婷色一区二区三区四区| 日韩一级精品视频在线观看| 亚洲精品国产精品久久清纯直播 |