全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5991
推到 Plurk!
推到 Facebook!

動態配置改為靜態配置 ( VS2008 MFC C++ )

答題得分者是:AndrewK
yensj
一般會員


發表:16
回覆:13
積分:5
註冊:2008-09-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-31 00:12:39 IP:220.136.xxx.xxx 訂閱
想請問板上的前輩,小弟要如何把動態配置記憶體改為靜態配置呢?因為想縮短執行時間,所以想弄成靜態宣告。
嘗試過宣告
[code cpp]
pVerTemplate = (FT_BYTE*)malloc(320*sizeof(void *));
[/code]
complier會過,但是執行的時間並沒有明顯的縮短
不知道這樣的方法是否為靜態宣告?

插中斷點得知 iRecommendedVerFtrLen 大都為320,
若宣告成這樣
[code cpp]
FT_BYTE* pVerTemplate [320] = {0};
[/code]
則會出現以下錯誤
錯誤 13 error C2664: 'MC_verifyFeaturesEx' : 無法將參數 5 從 'FT_BYTE *[320]' 轉換成 'FT_BYTE *'
錯誤 12 error C2664: 'FX_extractFeatures' : 無法將參數 6 從 'FT_BYTE *[320]' 轉換成 'FT_BYTE *'

以下為程式碼相關部分(最原始的動態宣告)
[code cpp]
FT_BYTE* pVerTemplate = NULL;
int iRecommendedVerFtrLen = 0;
FX_getFeaturesLen(FT_VER_FTR,
&iRecommendedVerFtrLen,
NULL);
pVerTemplate = new FT_BYTE[iRecommendedVerFtrLen];
[/code]
其中 typedef unsigned char FT_BYTE;
編輯記錄
yensj 重新編輯於 2009-07-31 00:13:49, 註解 無‧
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-31 01:16:24 IP:115.43.xxx.xxx 訂閱
關鍵在這  typedef unsigned char FT_BYTE;
你也可以了解一下靜態陣列如何宣告及陣列原理
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
yensj
一般會員


發表:16
回覆:13
積分:5
註冊:2008-09-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-31 02:44:24 IP:220.136.xxx.xxx 訂閱
AndrewK大你好,剛改成這樣宣告FT_BYTE pVerTemplate [320] ;就成功了( 無 pointer )

但是執行速度並沒有很明顯的提升,跟動態所花的時間差不多。

納悶的是,我是跑一千次迴圈,然後每一次都動態配置記憶體

照道理說改成靜態宣告後,執行速度會差異蠻大的,結果並沒有。

這地方觀念不知道是否有誤,再麻煩你指導一下,謝謝你!

===================引 用 AndrewK 文 章===================
關鍵在這 typedef unsigned char FT_BYTE;
你也可以了解一下靜態陣列如何宣告及陣列原理
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-07-31 04:46:59 IP:115.43.xxx.xxx 訂閱
宣告為靜態陣列對於速度上的處理是有限制的,
以你自行定義的 unsigned char ,我得到的資料是在可優化條件之外
你可以試試跑大一點迴圈,或使用 int 型別來比較,詳細測試看看
雖然指標對於靜態宣告,於資料中顯示一樣可優化,但此指標陣列,
之後一樣需有配置記憶體的動作
你亦可嘗試看看,是否有幫助
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
編輯記錄
AndrewK 重新編輯於 2009-07-31 14:13:06, 註解 無‧
系統時間:2024-11-21 18:17:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!