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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

優化C++程序編譯效率的實例

Posted on 2012-02-26 16:40 S.l.e!ep.¢% 閱讀(2130) 評論(0)  編輯 收藏 引用 所屬分類: C++


標 題: 優化C++程序編譯效率的實例
作 者:FlyToTheSpace
時 間:2005-12-27 22:12

鏈 接:http://bbs.pediy.com/showthread.php?threadid=19823


?

?

(1)自定義程序的入口
?(2)合并區段
?(3)不用調malloc,free等函數
?(3)不用cout來輸出,cin來輸入
?(4)如果調用了很多庫函數如memset,stycpy等等
?的話,請導入msvcrt.lib,不然編譯器會在程序里面
?導入靜態庫,這樣的話程序就會大很多。。
?(5)window編程不用mfc...
?減少程序運行內存占用量可以調用
?SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1);
?
----------sample.cpp---------------------
?#include <windows.h>
?#include "sample.h"
?#include "mydll.h"
?#include "resource.h"
?//這下面自定義函數入口
?#pragma comment(linker, "/ENTRY:EntryPoint")
?#pragma comment(linker,"/ALIGN:0x400")
?//設置區段屬性,跟區段在內存起始地址
?//這里面要加寫入的權限,不然程序就運行不了了
?//E為執行,R為可讀,W為可寫
?//更多的說明請參見msdn
?#pragma comment(linker,"/SECTION:.text,ERW /ALIGN:0x1000")
?//下面合并區段,
?#pragma comment(linker,"/merge:.data=.text")
?#pragma comment(linker,"/merge:.rdata=.text")
?//下面導入函數
?#pragma comment(lib,"mydll.lib")
?//下面是函數的入口
?//得到WinMain里面的幾個參數
?//HINSTANCE hInstance=GetModuleHandle(NULL)
?//LPSTR lpCmdLine= GetCommandLine()
?//int nCmdShow? 這個可以自己填
?void EntryPoint()
?{
?? HINSTANCE hInstance;
?? hInstance=GetModuleHandle(NULL);
?? Sample pro(hInstance);
?? DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,(DLGPROC)Sample::DialogProc,(LPARAM)&pro);
?}
?INT_PTR CALLBACK Sample::DialogProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
?{
?? static Sample *pro;
?? switch(message)
?? {
?? case WM_INITDIALOG:
???? pro=(Sample *)lParam;
???? pro->hwnd=hwnd;
???? pro->Init();
???? break;
?? case WM_COMMAND:
???? pro->WndPro_Command(wParam,lParam);
???? break;
?? case WM_CLOSE:
???? pro->WndPro_Close();
???? break;
?? case WM_TIMER:
???? //這里每秒鐘觸發一次
???? //來減少內存占用量
????????????????????? //試著在任務管理器里面看一下,sample.exe內存占用量是不是只有200多k,在我這里是這樣的
???? if(wParam==100)
???? {
?????? SetProcessWorkingSetSize(GetCurrentProcess(),
???????? -1,-1);
???? }
???? break;
?? }
?? return 0;
?}
?Sample::Sample(HINSTANCE hi)
?{
?? this->hInstance=hi;
?}
?int Sample::WndPro_Command(WPARAM wParam,LPARAM lParam)
?{
?? switch(wParam)
?? {
?? case IDOK:
???? this->LoadDll();
???? break;
?? case IDCANCEL:
???? this->WndPro_Close();
???? break;
?? }
?? return 0;
?}
?int Sample::WndPro_Close()
?{
?? EndDialog(hwnd,0);
?? return 0;
?}
?int Sample::Init()
?{
?? SetTimer(hwnd,100,100,NULL);
?? return 0;
?}
?int Sample::LoadDll()
?{
?? test(hwnd);
?? return 0;
?}
?UINT malloc_(size_t num)
?{
?? return (UINT)VirtualAlloc(NULL, num,MEM_RESERVE |MEM_COMMIT,PAGE_EXECUTE_READWRITE);
?}
?void free_(void * p)
?{
?? VirtualFree(p,NULL,MEM_RELEASE);
?}
?void ZeroMem(char * mem,int len)
?{
?? for(int i=0;i<len;i++)
???? mem[i]=0;
?}
?-------------------------------
?----------sample.h--------
?//下面是主函數的類
?class Sample
?{
?public:
?? static INT_PTR CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM);
?? Sample(HINSTANCE);
?private:
?? HINSTANCE hInstance;
?? HWND hwnd;
?? int WndPro_Command(WPARAM,LPARAM);
?? int WndPro_Close();
?? int Init();
?? int LoadDll();
?};
?///-->下為精簡的庫函數
?//分配內存最好不用庫函數malloc,
?//不要用cout 來輸出
?//如果你調用了很多庫函數的話
?//請在導入 msvcrt.lib
?UINT malloc_(size_t);//分配內存
?void free_(void *);//釋放內存
?void ZeroMem(char *,int);//清零
?-------------------------------
?---------mydll.cpp-----------
?#include <windows.h>
?#include "mydll.h"
?#pragma comment(linker, "/ENTRY:DllEntry")
?#pragma comment(linker,"/ALIGN:0x400")
?#pragma comment(linker,"/SECTION:.text,ERW /ALIGN:0x1000")
?#pragma comment(linker,"/merge:.data=.text")
?#pragma comment(linker,"/merge:.rdata=.text")
?BOOL APIENTRY DllEntry()
?{
?? return 1;
?}
?INT APIENTRY test(HWND hwnd)
?{
?? MessageBox(hwnd,"調用dll"," ",0);
?? return 0;
?}
?-----------------------
?下面是程序完整的代碼。。
附件:sample.rar


?

?

標 題: 答復
作 者:南蠻媽媽
時 間:2005-12-27 22:30

?


還能加些
?#pragma comment (linker, "/Filealign:0x200")
?#pragma comment (linker, "/OPT:REF")
?#pragma comment (linker, "/OPT:ICF")
?#pragma optimize("gsy", on)

?

?


標 題: 答復
作 者:FlyToTheSpace
時 間:2005-12-27 22:38

?


#pragma comment (linker, "/Filealign:0x200")
?在cl 里面,沒這個選項。
?用下面這個,但是加了沒用的,
?除非你的區段只有一個
?#pragma comment (linker, "/align:0x200")
?
下面的選項我還沒用過,
?#pragma comment (linker, "/OPT:REF")
?#pragma comment (linker, "/OPT:ICF")
?#pragma optimize("gsy", on)
?我編譯一般用命令行的,在.net 2003跟.net 2005
?里面的有好多選項連去都去不掉
?cl?? mydll.cpp mydll.def /link /dll /out:mydll.dll /machine:x86 /subsystem:windows user32.lib kernel32.lib
?rc sample.rc
?cl sample.cpp /link /machine:x86? user32.lib kernel32.lib /subsystem:windows sample.res
?del sample.obj sample.res? mydll.obj mydll.exp
?pause

?

?


標 題:Re: 優化C++程序編譯效率的實例
作 者:goldenegg
時 間:2005-12-28 10:08

?

?


引用:
--------------------------------------------------------------------------------
最初由 FlyToTheSpace 發布
(1)自定義程序的入口
(2)合并區段
(3)不用調malloc,free等函數
(3)不用cout來輸出,cin來輸入
(4)如果調用了很多庫函數如memset,stycpy等等
........
--------------------------------------------------------------------------------

?


SetProcessWorkingSetSize只是給你感觀上的內存變小而已,
如果你弄個hook進入photoshop這樣的程序去做這件事,
你就會馬上發現為什么別人并不怎么用 SetProcessWorkingSetSize

?SetProcessWorkingSetSize只是把內存寫回磁盤,當用到時又要從磁盤加載回來,程序一大,內存量本身占用大,你次讀寫磁盤那么慢,你就會發現雖然內存占用量下去了,但是硬盤一真轉個不停,程序基本上動不了...

所以如何節內存,不應從SetProcessWorkingSetSize下手,
當然現在你寫的小程序可以例外.

其實如果有個界面,占用個1M的內存實在是小事,不必要去計較.

?

?


標 題: 答復
作 者:FlyToTheSpace
時 間:2005-12-28 11:54

?


SetProcessWorkingSetSize
這個我是跟蹤realplay里面一個程序realsched.exe
發現的,其它減少內存用量的方法,還沒找到

?對于那些大一點的程序,就不能用settimer每隔段時間調用,
?當程序的界面最小化時,調用一下就可以了,
?比如potoshop 在顯示界面的時候,占用內存會很大,但只要你將它最小化
?內存占用量馬上就減下來了,很多大一點的程序都是這樣的。

?

?


標 題: 答復
作 者:dummy
時 間:2005-12-28 14:49

?


cl.exe 有許多關于程序代碼優化的開關:
?/////////////////////////////////////////////////////////
??????????????????????????????? -OPTIMIZATION-
?
/O1 minimize space????? /Op[-] improve floating-pt consistency
?/O2 maximize speed????? /Os favor code space
?/Oa assume no aliasing?????????????????? /Ot favor code speed
?/Ob<n> inline expansion (default n=0)??? /Ow assume cross-function aliasing
?/Od disable optimizations (default)????? /Ox maximum opts. (/Ogityb1 /Gs)
?/Og enable global optimization?????????? /Oy[-] enable frame pointer omission
?/Oi enable intrinsic functions
?
???????????????????????????? -CODE GENERATION-
?
/G3 optimize for 80386?????????????????? /Gy separate functions for linker
?/G4 optimize for 80486?????????????????? /Ge force stack checking for all funcs
?/G5 optimize for Pentium???????????????? /Gs[num] disable stack checking calls
?/G6 optimize for Pentium Pro???????????? /Gh enable hook function call
?/GB optimize for blended model (default) /GR[-] enable C++ RTTI
?/Gd __cdecl calling convention?????????? /GX[-] enable C++ EH (same as /EHsc)
?/Gr __fastcall calling convention??????? /Gi[-] enable incremental compilation
?/Gz __stdcall calling convention???????? /Gm[-] enable minimal rebuild
?/GA optimize for Windows Application???? /EHs enable synchronous C++ EH
?/GD optimize for Windows DLL???????????? /EHa enable asynchronous C++ EH
?/Gf enable string pooling??????????????? /EHc extern "C" defaults to nothrow
?/GF enable read-only string pooling????? /QIfdiv[-] enable Pentium FDIV fix
?/GZ enable runtime debug checks????????? /QI0f[-] enable Pentium 0x0f fix

?

?


標 題: 答復
作 者:dwing
時 間:2005-12-28 15:59

?


我有中文版的編譯器:
?
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
?Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
?
????????????????????????? C/C++ 編譯器選項
?
????????????????????????????? -優化-
?
/O1 最小化空間????????????????????????? /Op[-] 改善浮點數一致性
?/O2 最大化速度????????????????????????? /Os 優選代碼空間
?/Oa 假設沒有別名??????????????????????? /Ot 優選代碼速度
?/Ob<n> 內聯展開(默認 n=0)?????????????? /Ow 假設交叉函數別名
?/Od 禁用優化(默認值)??????????????????? /Ox 最大化選項。(/Ogityb2 /Gs)
?/Og 啟用全局優化??????????????????????? /Oy[-] 啟用框架指針省略
?/Oi 啟用內部函數
?
???????????????????????????? -代碼生成-
?
/G3 為 80386 進行優化?????????????????? /Gh 啟用 _penter 函數調用
?/G4 為 80486 進行優化?????????????????? /GH 啟用 _pexit 函數調用
?/G5 為 Pentium 進行優化???????????????? /GR[-] 啟用 C++ RTTI
?/G6 對 PPro、P-II、P-III 進行優化?????? /GX[-] 啟用 C++ EH (與 /EHsc 相同)
?/G7 對 Pentium 4 或 Athlon 進行優化???? /EHs 啟用 C++ EH (沒有 SEH 異常)
?/GB 為混合模型進行優化(默認)??????????? /EHa 啟用 C++ EH(w/ SEH 異常)
?/Gd __cdecl 調用約定??????????????????? /EHc extern "C" 默認為 nothrow
?/Gr __fastcall 調用約定???????????????? /GT 生成纖維安全 TLS 訪問
?/Gz __stdcall 調用約定????????????????? /Gm[-] 啟用最小重新生成
?/GA 為 Windows 應用程序進行優化???????? /GL[-] 啟用鏈接時代碼生成
?(按 <Enter> 繼續)
?/Gf 啟用字符串池??????????????????????? /QIfdiv[-] 啟用 Pentium FDIV 修復
?/GF 啟用只讀字符串池??????????????????? /QI0f[-] 啟用 Pentium 0x0f 修復
?/Gy 分隔鏈接器函數????????????????????? /QIfist[-] 使用 FIST 而不是 ftol()
?/GZ 啟用堆棧檢查(/RTCs)???????????????? /RTC1 啟用快速檢查(/RTCsu)
?/Ge 對所有函數強制堆棧檢查????????????? /RTCc 轉換為較小的類型檢查
?/Gs[num] 控制堆棧檢查調用?????????????? /RTCs 堆棧幀運行時檢查
?/GS 啟用安全檢查??????????????????????? /RTCu 未初始化的本地用法檢查
?/clr[:noAssembly] 為公共語言運行庫編譯
???? noAssembly - 不產生程序集
?/arch:<SSE|SSE2> CPU 結構的最低要求,以下內容之一:
???? SSE - 啟用支持 SSE 的 CPU 可用的指令
???? SSE2 - 啟用支持 SSE2 的 CPU 可用的指令
?
????????????????????????????? -輸出文件-
?
/Fa[file] 命名程序集列表文件??????????? /Fo<file> 命名對象文件
?/FA[sc] 配置程序集列表????????????????? /Fp<file> 命名預編譯頭文件
?/Fd[file] 命名 .PDB 文件??????????????? /Fr[file] 命名源瀏覽器文件
?/Fe<file> 命名可執行文件??????????????? /FR[file] 命名擴展 .SBR 文件
?/Fm[file] 命名映射文件
?
????????????????????????????? -預處理器-
?
/AI<dir> 添加到程序集搜索路徑?????????? /Fx 將插入的代碼合并到文件
?(按 <Enter> 繼續)
?/FU<file> 強制使用程序集/模塊?????????? /FI<file> 命名強制包含文件
?/C 不抽出注釋?????????????????????????? /U<name> 移除預定義宏
?/D<name>{=|#}<text> 定義宏????????????? /u 移除所有預定義宏
?/E 預處理到 stdout????????????????????? /I<dir> 添加到包含搜索路徑
?/EP 預處理到 stdout,沒有 #line???????? /X 忽略“標準位置”
?/P 預處理到文件
?
??????????????????????????????? -語言-
?
/Zi 啟用調試信息??????????????????????? /Ze 啟用擴展(默認)
?/ZI 啟用“編輯并繼續”調試信息????????? /Zl 省略 .OBJ 中的默認庫名
?/Z7 啟用舊式調試信息??????????????????? /Zg 生成函數原型
?/Zd 僅有行號調試信息??????????????????? /Zs 只進行語法檢查
?/Zp[n] 在 n 字節邊界上包裝結構????????? /vd{0|1} 禁用/啟用 vtordisp
?/Za 禁用擴展(暗指 /Op)????????????????? /vm<x> 指向成員的指針類型
?/Zc:arg1[,arg2] C++ 語言一致性,這里的參數可以是:
???? forScope - 對范圍規則強制使用標準 C++
???? wchar_t - wchar_t 是本機類型,不是 typedef
?
????????????????????????????? - 雜項 -
?
@<file> 選項響應文件??????????????????? /wo<n> 發出一次警告 n
?/?, /help 打印此幫助消息??????????????? /w<l><n> 為 n 設置警告等級 1-4
?/c 只編譯,不鏈接?????????????????????? /W<n> 設置警告等級(默認 n=1)
?(按 <Enter> 繼續)
?/H<num> 最大外部名稱長度??????????????? /Wall 啟用所有警告
?/J 默認 char 類型是 unsigned??????????? /Wp64 啟用 64 位端口定位警告
?/nologo 取消顯示版權消息??????????????? /WX 將警告視為錯誤
?/showIncludes 顯示包含文件名??????????? /WL 啟用單行診斷
?/Tc<source file> 將文件編譯為 .c??????? /Yc[file] 創建 .PCH 文件
?/Tp<source file> 將文件編譯為 .cpp????? /Yd 將調試信息放在每個 .OBJ 中
?/TC 將所有文件編譯為 .c???????????????? /Yl[sym] 為調試庫插入 .PCH 引用
?/TP 將所有文件編譯為 .cpp?????????????? /Yu[file] 使用 .PCH 文件
?/V<string> 設置版本字符串?????????????? /YX[file] 自動 .PCH
?/w 禁用所有警告???????????????????????? /Y- 禁用所有 PCH 選項
?/wd<n> 禁用警告 n?????????????????????? /Zm<n> 最大內存分配(默認為 %)
?/we<n> 將警告 n 視為錯誤
?
???????????????????????????????? -鏈接-
?
/MD 與 MSVCRT.LIB 鏈接????????????????? /MDd 與 MSVCRTD.LIB 調試庫鏈接
?/ML 與 LIBC.LIB 鏈接??????????????????? /MLd 與 LIBCD.LIB 調試庫鏈接
?/MT 與 LIBCMT.LIB 鏈接????????????????? /MTd 與 LIBCMTD.LIB 調試庫鏈接
?/LD 創建 .DLL?????????????????????????? /F<num> 設置堆棧大小
?/LDd 創建 .DLL 調試庫?????????????????? /link [鏈接器選項和庫]

?

?


標 題:Re: 優化C++程序編譯效率的實例
作 者:dwing
時 間:2005-12-28 16:49

?


樓主的文章寫的不錯!
?但標題寫的有點疑慮.
?因為優化有幾種意義:速度優化,代碼空間優化,編譯速度優化和內存占用優化.
?一般來說需要速度優化的地方,代碼空間優化和內存占用優化就要犧牲一些.
?
編譯速度優化可能意義不太大,不過我還是補充一下:
?例如添加以下宏可以提高一些編譯速度,在硬盤和CPU速度較慢的機器上尤為明顯.
?#define VC_EXTRALEAN
?#define WIN32_LEAN_AND_MEAN
?#define WIN32_EXTRA_LEAN
?另外如果關閉預編譯頭文件的功能,可以大大提高第一次編譯的速度,并減少硬盤占用的空間.
?強烈建議編譯小程序的時候關閉這個功能,因為它默認是啟動的.
?
下面評價一下樓主的一些優化,僅供參考.
?


引用:
--------------------------------------------------------------------------------
(1)自定義程序的入口
--------------------------------------------------------------------------------

?

?一般不建議使用自定義入口,雖然只有使用動態庫時只節省不到1KB.
?主要是考慮到C++的全局對象的構造,如果自定義就會被忽略掉.
?不過如果確實想使代碼精簡到極限,可以考慮.
?此優化對速度幾乎無影響.
?


引用:
--------------------------------------------------------------------------------
(2)合并區段
--------------------------------------------------------------------------------

?

?這一項對減小PE文件大小很有幫助,但一定要注意正確設置好節(段)屬性,否則后果不可知.
?表面上此優化對速度無影響,但可能會導致數據cache與代碼cache重疊,不利于CPU的執行.
?如果需要加壓縮殼,此優化可能無效,如果合并不當可能還會使壓縮能力降低(例如代碼被混合在數據當中).
?


引用:
--------------------------------------------------------------------------------
(3)不用調malloc,free等函數
--------------------------------------------------------------------------------

?

?分配內存不用malloc,free等函數用什么?new和delete嗎?后者當然更好:)
?Win32API有眾多分配內存的函數,malloc等C/C++標準庫當然使用的是API中的
?堆分配(HeapAlloc),而堆分配調用虛擬分配(VirtualAlloc).效率當然是后者高一些.
?但實際內存分配一般在初始化過程中使用,而且使用次數也不應過多(以避免內存碎片).
?所以速度影響幾乎可忽略.
?代碼量應該不會有太大影響.
?


引用:
--------------------------------------------------------------------------------
(3)不用cout來輸出,cin來輸入
--------------------------------------------------------------------------------

?

?這個確實可以使用C標準庫來替代,而且使用靈活,速度更快一些.
?如果使用動態庫,代碼量差距不大.
?


引用:
--------------------------------------------------------------------------------
(4)如果調用了很多庫函數如memset,stycpy等等的話,請導入msvcrt.lib,
?不然編譯器會在程序里面導入靜態庫,這樣的話程序就會大很多。。
--------------------------------------------------------------------------------

?

?這點不用擔心了.原因如下:
?如果使用最快速度優化,memset,stycpy,sin等某些內存/字符串/數學函數會被自動內聯到程序中,
?無論是否使用動態庫還是靜態庫,速度要快的多,我也推薦這么做.
?使用次數過多代碼量會大一些.但如果加壓縮殼的話影響不會太大.
?如果使用最小代碼優化,自動內聯的函數不會內聯,此時可使用動態庫以減小代碼量.
?如果只使用1~2次某個可自動內聯的函數的話代碼量可能反而更多(還要考慮到導入表)
?


引用:
--------------------------------------------------------------------------------
(5)window編程不用mfc...
--------------------------------------------------------------------------------

?

?呵呵,這就不一定了.目前如果沒有還在使用Win95系統的話,MFC的動態庫就可以大膽使用了.
?但要注意一定要使用MFC42.DLL的庫,也就是VC6.0自帶的庫,高版本的可能連WinXP也不會自帶.
?


引用:
--------------------------------------------------------------------------------
減少程序運行內存占用量可以調用SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1);
--------------------------------------------------------------------------------

?

?又學到一招!
?但我不得不說一下:這是個騙人的招數.拿來騙一騙初級用戶還可以-_-
?因為任務管理器只顯示進程當前使用的物理內存大小,所以使用這個招數雖然可以降低物理內存占用.
?但虛擬內存并無減少,所以這個技巧只建議使用在后臺或很少工作的進程.
?經常使用這個函數會造成CPU負擔過重,磁盤交換文件的讀寫也會更頻繁.這樣會很影響進程的執行效率.
?其實不需要在意物理內存占用,如果物理內存不夠用,系統會自動降低不常工作的進程的物理內存.

?

?


標 題: 答復
作 者:dwing
時 間:2005-12-28 17:05

?


再補充幾點:


引用:
--------------------------------------------------------------------------------
#pragma comment (linker, "/align:0x200")
--------------------------------------------------------------------------------

?

?這著我也經常用,不過我經常這么寫(只用于VC6.0):
?#pragma comment(linker,"/OPT:NOWIN98")
?但是如果要加壓縮殼的話,這個PE文件空間優化沒有一點作用,
?因為虛擬地址沒有改變(仍然是4KB,而且無法改變).
?


引用:
--------------------------------------------------------------------------------
#pragma comment (linker, "/ALIGN:16")
--------------------------------------------------------------------------------

?

?對齊到16字節可能有兼容性問題,可能不能在Win9x中運行.
?


引用:
--------------------------------------------------------------------------------
#pragma comment(linker, "/ENTRY:EntryPoint")
--------------------------------------------------------------------------------

?

?如果沒有不加入默認庫的話可以不用自定義入口.
?而直接用void mainCRTStartup()或void WinMainCRTStartup()即可.
?但不使用默認庫可能某些浮點數的轉換會出現問題,雖然可以使用其他方法解決.
?


引用:
--------------------------------------------------------------------------------
#pragma comment (linker, "/OPT:REF")
?#pragma comment (linker, "/OPT:ICF")
--------------------------------------------------------------------------------

?

?這一項其實在默認的優化編譯設置中已經有了,不用寫出來.
?如果啟動"/OPT:REF"的話,"/OPT:ICF"默認會自動啟動.
?


引用:
--------------------------------------------------------------------------------
#pragma comment (linker,"/merge:.rsrc=.text")
--------------------------------------------------------------------------------

?

?這項一定不要加,有時候如果資源不在某個節(段)的開始,程序的圖標可能不能顯示出來.

?

?


標 題: 答復
作 者:goldenegg
時 間:2005-12-29 21:13

?

?


引用:
--------------------------------------------------------------------------------
最初由 FlyToTheSpace 發布
?SetProcessWorkingSetSize
?這個我是跟蹤realplay里面一個程序realsched.exe
?發現的,其它減少內存用量的方法,還沒找到
?
對于那些大一點的程序,就不能用settimer每隔段時間調用,
?........
--------------------------------------------------------------------------------

?

?nono,不是大的程序自己搞的,是操作系統做的。
?在你的窗口最小化的時候,操作系統自動幫你把內存最小化了。
?所以,你自己就更沒有必要去調這個函數了。
?


引用:
--------------------------------------------------------------------------------
最初由 dwing 發布
?
呵呵,這就不一定了.目前如果沒有還在使用Win95系統的話,MFC的動態庫就可以大膽使用了.
?但要注意一定要使用MFC42.DLL的庫,也就是VC6.0自帶的庫,高版本的可能連WinXP也不會自帶.
?
--------------------------------------------------------------------------------

?

nono,mfc42.dll從win98se開始,到longhorn都是默認有的。vc6 mfc的程序,編成release就可以在每臺機器上跑了,不用到處拷個mfc42.dll

?

?


標 題: 答復
作 者:dwing
時 間:2005-12-30 15:38

?

?


引用:
--------------------------------------------------------------------------------
最初由 goldenegg 發布
?nono,mfc42.dll從win98se開始,到longhorn都是默認有的。vc6 mfc的程序,編成release就可以在每臺機器上跑了,不用到處拷個mfc42.dll
?........
--------------------------------------------------------------------------------

?

?可能是對我的話理解有誤.我們的觀點是一樣的.
?再補充一下:
?Win95OSR2(Win97)雖然自帶msvcrt40.dll和mfc30.dll,但不是目前的標準庫了.
?Win98SE自帶了msvcrt.dll和mfc42.dll,Win98第一版不知有沒有.
?WinXP第一版肯定不帶msvcr71.dll和mfc71.dll,這些是VC7.1才使用的動態庫.

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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国产精品久久久久| 国产精品亚洲人在线观看| 亚洲午夜影视影院在线观看| 欧美激情影院| 欧美成人午夜激情视频| 亚洲国产视频一区| 亚洲第一网站| 老司机午夜精品视频| 国产亚洲欧洲| 麻豆91精品| 久久久国产午夜精品| 亚洲高清视频中文字幕| 999在线观看精品免费不卡网站| 久久男女视频| 曰韩精品一区二区| 久久久999精品免费| 欧美自拍偷拍| 国产亚洲激情视频在线| 久久久免费精品| 久久亚洲综合色| 亚洲欧洲一区二区三区久久| 欧美jjzz| 欧美日韩美女一区二区| 亚洲欧美中文字幕| 欧美在线一区二区| 亚洲欧洲在线播放| 亚洲性感美女99在线| 韩日成人av| 亚洲激情偷拍| 国产精品久久亚洲7777| 久久人人爽人人爽爽久久| 猛男gaygay欧美视频| 亚洲午夜久久久久久久久电影院| 亚洲欧美国产制服动漫| 亚洲高清123| 99在线热播精品免费99热| 国产欧美日韩视频| 久久综合精品一区| 欧美日韩成人在线视频| 亚洲欧美大片| 噜噜噜躁狠狠躁狠狠精品视频| av成人免费观看| 欧美一区二区三区四区夜夜大片| 亚洲成色777777在线观看影院| 亚洲日韩第九十九页| 国产亚洲一区二区三区| 亚洲国产高清高潮精品美女| 国产精品电影网站| 欧美国产国产综合| 国产欧美不卡| 亚洲毛片在线观看| 经典三级久久| 亚洲伊人观看| 日韩午夜精品| 久久久噜噜噜久久久| 午夜精品一区二区三区在线| 欧美国产欧美综合| 久久综合九色综合欧美就去吻| 欧美日韩网站| 欧美激情精品| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲精品在线视频观看| 亚洲国产成人久久综合| 午夜精品免费| 亚洲视频在线观看| 免费看的黄色欧美网站| 久久久午夜电影| 国产日韩欧美在线| 亚洲色图制服丝袜| 亚洲午夜免费视频| 欧美大片在线看| 欧美.com| 在线观看av不卡| 亚洲欧美日韩在线不卡| 亚洲综合电影| 一本色道久久综合狠狠躁篇的优点| 国产午夜精品久久| 一本色道久久综合亚洲二区三区| 亚洲东热激情| 久久久久国产精品www| 亚洲欧美在线播放| 国产精品乱码一区二区三区| 亚洲精品日日夜夜| 亚洲毛片在线看| 欧美第一黄色网| 亚洲福利久久| 亚洲毛片av在线| 欧美另类变人与禽xxxxx| 亚洲国产高清在线观看视频| 亚洲精品国产精品国自产观看浪潮 | 欧美激情亚洲| 亚洲国产精品一区二区www| 久久九九久久九九| 久久久久国色av免费观看性色| 国产精品男gay被猛男狂揉视频| 亚洲电影网站| 在线视频欧美日韩精品| 欧美亚洲成人精品| 亚洲欧美日韩天堂| 久久一区二区三区四区五区| 一区二区在线免费观看| 美女国内精品自产拍在线播放| 欧美高清视频| 一区二区日本视频| 国产精品视频精品| 久久精品视频免费观看| 老司机免费视频一区二区| 亚洲高清自拍| 欧美日本一区二区视频在线观看| 日韩视频免费观看高清在线视频 | 国产精品丝袜白浆摸在线| 午夜久久久久久久久久一区二区| 久久精品中文| 亚洲精品乱码久久久久久按摩观| 欧美日韩极品在线观看一区| 亚洲淫性视频| 牛牛影视久久网| 在线亚洲精品| 国产欧美一区二区白浆黑人| 久久亚洲国产精品日日av夜夜| 亚洲高清毛片| 亚洲欧美日韩国产成人精品影院| 国产私拍一区| 欧美精品在线网站| 欧美一区二区三区免费观看视频| 久久亚洲私人国产精品va| 一本不卡影院| 伊伊综合在线| 欧美午夜在线观看| 蜜桃av一区二区在线观看| 亚洲一区二区四区| 亚洲国产高清高潮精品美女| 欧美在线视频免费播放| 亚洲国产精品一区二区第一页 | 亚洲激情在线激情| 亚洲精品视频一区二区三区| 免费中文日韩| 一区二区精品在线| 韩国精品一区二区三区| 欧美日韩在线视频一区| 久久精品一区二区三区不卡牛牛| 亚洲精品一区二区三区蜜桃久| 欧美一区二区三区播放老司机| 亚洲美女视频在线观看| 黄色日韩精品| 国产欧美91| 国产精品大片| 欧美激情一二区| 久久精品导航| 亚洲欧美春色| 亚洲视频一区二区在线观看| 欧美激情中文字幕一区二区| 久久亚洲国产精品一区二区| 亚洲综合日韩| 一本色道久久综合亚洲精品高清| 狠狠久久亚洲欧美| 国产精品亚洲综合| 欧美色区777第一页| 欧美本精品男人aⅴ天堂| 久久久国产精品一区二区三区| 一区二区三区免费观看| 亚洲精品视频二区| 亚洲国产欧美一区| 欧美激情在线观看| 欧美国产高潮xxxx1819| 久久夜色撩人精品| 久久久中精品2020中文| 午夜亚洲性色视频| 亚洲欧美日本日韩| 午夜一区不卡| 久久国产欧美日韩精品| 久久国产精品黑丝| 久久久久久一区二区三区| 欧美在线观看网址综合| 欧美在线一二三| 久久精品72免费观看| 欧美亚洲一区二区三区| 羞羞色国产精品| 久久精品亚洲| 欧美91视频| 欧美激情中文不卡| 亚洲理伦在线| 99精品免费网| 亚洲一区二区在线播放| 午夜精品久久久久久久蜜桃app | 亚洲午夜免费视频| 亚洲免费影视| 欧美一区二区三区免费视频| 欧美在线播放一区| 久久久精品tv| 欧美成人国产一区二区| 最新日韩av| 一本色道久久综合亚洲精品不 | 欧美激情小视频| 欧美午夜寂寞影院|