同一個專案如何使用多cpu編譯

2009-10-26 7:07 pm
各位大大好:
我使用.net2008 c++ 開發軟體
最近程式越寫越大,載入的程式碼也越來越多,但我都放再同一個方案內
但最近發一編譯的時間非常長,超過兩分鐘
想請問有沒有辦法利用cpu多核心的硬體技術讓cpu分散工作?
我在msdn上查過,多cpu同時編意僅針對多個不同方案才有效,
msbuild好像有提到這方面的技術,但是真的是有看沒有懂
請問各位有經驗的大大有比較好的解決問題的方法嗎?
當然可以把暫時不須編意的標頭檔跟程式檔disabled掉讓他跳過編譯節省時間,
但我的系統同時包含MFC和CLI的原始檔,因是架構很大,每此編義光重組上述標頭檔就非常花時間,請有經驗的大大幫幫忙吧!!
感恩
更新1:

TO:LEE 您說的部分我都已經做了,請問還有其他的方法嗎? 感恩

回答 (6)

2009-10-31 12:12 am
✔ 最佳答案
才 2分?
20年前我就有 30分的!
目前我在公司寫的,要15分!
還是加速過! 外加部份使用 dll!
幾個東西處理一下:
0. 有沒有用 #pragma once?M$ 聲稱它:
 不但可以解決 include guard 的問題,還可以加速 compile!(雖然我不覺得)
1. 有沒有用 pre-compiled header?
 不用它,公司的程式 compile 起來要超過 30分鐘!
 這項是你的最重要解答!
2. 能/該用 dll 的,就用它!
3. 能不在 .h 裡 include 的,就用 forward declaration!
 到 cpp 裡,再 include
4. Debug mode 不要開任何 optimize!
 Release mode 再開
好像還有,一時想不起來!

2009-10-31 05:49:35 補充:
問:Precompiled Headers (PCH) 是什麼? 怎麼用?


答:
Project Property → Configuration Properties → C/C++ → Precompiled headers
 先選 create,compile 一次
 再選 use
就可以了

已知缺點:
1. 要多 compile 一次
2. 它會多產生 一些檔案 (.pch),佔用專案的目錄所使用的 HD space
3. 有時它會失效,造成(特別是)define constant 等沒跟著更新!@.@
 萬一不幸發生,唯一 100% 有效的招:請它再 create 一次 PCH

2009-10-31 18:57:04 補充:
我說你的才2分,不是看不起你,是要你
1. 有耐心!
2. 沒有免費的午餐!程式大,就一定要付這代價!
3. 不要趕做程式!一直趕做程式,除了一般知道的代價以外,這個也是!
 因為
  header 沒寫好、設計好;
  該用 DLL 的沒用
 等,每次 compile 所浪費的時間,不可忽視!

2009-11-04 10:47:29 補充:
PCH 已經做了的話,剩下的加速就不會很明顯了。

目前想到還有二項:
0. 改變程式結構! 這要長時,而且公司要有你們信得過的真的高手做規劃整理!
 要有心理準備:是個耗時的工作!
 但你們:
 a. 請不請得到這樣的人?
 b. 管理階層信不信任?
 c. 有沒有決心/資本,賠一陣!!?

2009-11-04 10:48:30 補充:
A. 改變 compiler 的 output!含:File 和 Screen Message!
 a. File: 可試試 RAM Driver!把 Tmp檔的輸出目錄改去 RAM Driver!
  參 http://tw.knowledge.yahoo.com/my/my_answer?field=srp&p=RAM+Driver
 b. Screen Message:這部份也不容易!主要是減少 Warning / Error 的輸出:
  0. 關掉它!這是最快、但也是最差的做法!
  1. 分批把 Warning 全解決掉!

2009-11-04 10:48:55 補充:
某公司的程式就有一萬多個 Warning!
我就說:
 1. 主管沒魄力解決這些 Warning,每次 compile 浪費的時間不可計數!
 2. 這些 Warning 淹沒了重要的 Warning Message!!
  因此,程式必定 Bugs 百出!

2009-11-05 13:45:33 補充:
看來我該要的是:
 不要輪為投票!
而不是:
 你的老闆要不要給我加薪!

 哭   哭   哭   哭
 哭哭哭哭哭哭  哭哭哭哭哭哭
 哭   哭   哭   哭
 哭   哭   哭   哭
 哭哭哭哭哭   哭哭哭哭哭
       哭
       哭     哭
哭哭哭哭哭哭哭哭哭哭哭哭哭哭哭
      哭 哭
     哭   哭哭
   哭哭     哭哭哭
哭哭哭        哭哭哭哭

2009-11-16 11:16:18 補充:
淪為投票,其它加速法,就留在我的腦裡就好了!
^_^
參考: 老闆,別開除我! 對了,你的老闆要不要給我加薪?, 你們老闆真的要給我加薪了啦!, 你們老闆真的要給我加薪了啦!, 祝加速成功! ^_^
2014-09-12 6:17 pm
您期待已久的 8891娛樂城 熱烈開幕囉!

8891娛樂城以優質的服務領先業界

多位美女客服24小時即時線上為您服務!

8891娛樂城有優於市面所有台灣運彩遊戲盤口的賠率

以及免下載美女視訊百家樂、21點、骰寶、各國賓果、餐廳賓果、彩球遊戲

另有數百位真人視訊聊天辣妹與您進行互動聊天還有"精彩"電影喔!

心動了嗎!! 快來體驗市面上最完質最高品質的服務

現在有開放免費試玩喔! 官方 : 8891.NET
2014-09-04 6:51 pm
【亞洲36588合法彩券公司直營 官網: A36588.NET 】

【 最新活動→迎接新會員,首存狂送20% 】

【運動→電子→對戰→現場→彩球 】

【免費服務 →電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服 】

【亞洲36588合法彩券公司直營 官網: A36588.NET 】
2009-11-07 1:49 am
To Jabob 大:
對於這種提問者,不用心軟!
二話不說,直接加入「知識+黑名單」資料庫!
2009-10-29 6:02 am
標頭檔…應該可以先編成 lib,除非你常常要去修改它。
2009-10-27 10:52 pm
這問題, 你要不要乾脆去MSDN論壇問, 得到解答的機會比較高
http://social.msdn.microsoft.com/Forums/zh-TW/categories


收錄日期: 2021-04-28 23:14:04
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20091026000016KK02261

檢視 Wayback Machine 備份