力為的技術博客
聯系
聚合
管理
154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
公告
@上海浦東
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(58)
給我留言
查看公開留言
查看私人留言
隨筆分類
(154)
2. Graphics(10)
3. VC&MFC&Qt(35)
4. C++ FAQ(35)
5. GP&STL&BOOST(10)
6. COM&ATL&WTL(5)
7. OGRE Analysis(14)
8. ACIS/HOOPS(4)
9.OpenCASCADE(13)
Mac&iOS(5)
Mac&iOS(1)
Tools(22)
積分與排名
積分 - 709356
排名 - 22
最新評論
1.?re: 2015武漢校園招聘歸來
@eryar
時間安排的太緊,就沒有驚擾你啦。
--力為
2.?re: 2015武漢校園招聘歸來
評論內容較長,點擊標題查看
--sunyuanbo
3.?re: 2015武漢校園招聘歸來
謝謝 您的筆記讓我受益匪淺
--仝錫林
4.?re: 2015武漢校園招聘歸來
不知道來武漢了啊!
--eryar
5.?re: 2015武漢校園招聘歸來
@力為
謝謝提醒,還在學習中。。。
--編程小學徒
6.?re: 2015武漢校園招聘歸來
評論內容較長,點擊標題查看
--編程小學徒
7.?re: 2015武漢校園招聘歸來[未登錄]
評論內容較長,點擊標題查看
--chipset
8.?re: 2015武漢校園招聘歸來
@編程小學徒
考研也不僅僅靠有編程興趣就夠了,還有其他的課程。好好準備吧,祝考試順利。
--力為
9.?re: 2015武漢校園招聘歸來
評論內容較長,點擊標題查看
--編程小學徒
10.?re: 2015武漢校園招聘歸來[未登錄]
為了混口飯吃,大家都不容易啊,原諒刷題的同學吧。話說學校里能教啥呀,都靠自己用心,有上進心才是最重要的,否則筆試面試再好也是白扯。從面試官的角度看考試沒有錯,換成我會找有潛力的或者上進心強的。
--chipset
11.?re: 【代碼】使用Teigha讀取DWG
要用vs2010編譯么?
--jj
12.?re: 臨時對象引用[未登錄]
最后一個例子也是零時變量?
--zhonghuajia
13.?re: 為什么需要給函數返回類型加const
評論內容較長,點擊標題查看
--冬瓜
14.?re: 【代碼】使用Teigha讀取DWG
歡迎加入QQ群122751318,討論Teigha
--Teigha開發
15.?re: CMake + Qt5.1.0
@MIKE
還是不行。
不管是prefix還是library還是include,都嘗試過了,不行,網上的方法都不行……
--Delbert
評論排行榜
1.?Pro OGRE 3D Programming 電子版(54)
2.?手機號碼黑名單(53)
3.?屏幕截圖工具V1[附源碼](22)
4.?波形顯示不是很難(15)
5.?五個小矮人分桃子-一道小學生的作業題目(15)
6.?用CImage加載內存里的Image(14)
7.?用istringstream 解決問題一則(14)
8.?OGRE動畫練習(13)
9.?VC+ADO操作數據庫注意事項(1)(13)
10.?fstream 和 中文路徑(13)
11.?OGRE粒子系統之在烈火中永生(11)
12.?如何通過FILE*操作內存文件?(11)
13.?VC2008 Feature Pack的問題(11)
14.?升級到 VS2008 SP1 注意問題(11)
15.?失足于shared_ptr(11)
遞歸引起的性能問題
程序模型
有類似這樣的一個數據結構:
class
MyData
{
public
:
MyData
*
Clone()
const
;
private
:
Array
<
MyData
>
m_arrData;
}
現在需要實現MyData::Clone方法,很自然的會使用這樣的方法實現:
MyData
*
MyData::Clone()
const
{
MyData
*
pData
=
new
MyData;
const
int
nSize
=
m_arrData.size();
pData
->
m_arrData.resize(nSize);
for
(
int
ii
=
0
;ii
<
nSize;
++
ii)
pData[ii]
=
m_arrData[ii]
->
Clone();
return
pData;
}
姑且稱m_arrData中的數據為MyData對象的子節點。假如MyData的某個對象有N層孫子節點。當調用Clone的時候,非常有可能發生堆棧溢出的情況。
在實際的應用的時候發現,在堆棧溢出的時候不會拋出異常,會有假死的癥狀,CPU會用滿,出現程序好像還在艱難的思考的假象。
解決辦法: 用循環代替遞歸調用。
療效:程序變快了
注意:遞歸可以方便直觀的實現算法,但有時候卻會大大的影響程序性能,甚至引發程序非正常死亡。
posted on 2010-03-24 14:24
力為
閱讀(2793)
評論(3)
編輯
收藏
引用
所屬分類:
4. C++ FAQ
評論
#
re: 遞歸引起的性能問題 2010-03-24 23:48
Quon
尾遞歸是解決優雅代碼和性能的良方
回復
更多評論
#
re: 遞歸引起的性能問題 2010-03-25 17:09
力為
關于尾遞歸:
尾遞歸與Continuation
http://blog.csdn.net/fisher_jiang/archive/2009/04/29/4133533.aspx
回復
更多評論
#
re: 遞歸引起的性能問題
2010-03-26 16:58
sigepluto
正解,用尾遞歸就好了。
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
VS2010 Win32編譯失敗一例
std::vector使用一例
istreambuf_iterator 使用
臨時對象引用
布爾變量初始值(2)
為什么需要給函數返回類型加const
被遺忘的argv[0]
當嵌套類遇見API
用lambda對std::list排序
構造UTF8的std::string
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 力為
久久久久97国产精华液好用吗
|
亚洲欧美久久久久9999
|
久久青青草原精品国产
|
久久香蕉超碰97国产精品
|
国产V亚洲V天堂无码久久久
|
精品无码久久久久久国产
|
久久精品卫校国产小美女
|
久久er热视频在这里精品
|
欧美久久亚洲精品
|
久久Av无码精品人妻系列
|
欧美一级久久久久久久大
|
丁香色欲久久久久久综合网
|
久久综合综合久久狠狠狠97色88
|
人妻精品久久久久中文字幕
|
国内精品久久久久久99
|
亚洲美日韩Av中文字幕无码久久久妻妇
|
国产精品综合久久第一页
|
无码国内精品久久综合88
|
嫩草影院久久国产精品
|
久久中文字幕人妻丝袜
|
三级片免费观看久久
|
国产精品欧美久久久久天天影视
|
亚洲伊人久久大香线蕉综合图片
|
亚洲午夜久久久精品影院
|
亚洲国产精品高清久久久
|
久久男人中文字幕资源站
|
老司机国内精品久久久久
|
亚洲精品高清国产一线久久
|
四虎影视久久久免费
|
国产精品青草久久久久福利99
|
亚洲国产精品一区二区久久hs
|
久久人人爽人人爽人人片AV麻豆
|
2020久久精品国产免费
|
亚洲午夜久久久影院伊人
|
亚洲精品NV久久久久久久久久
|
精品无码久久久久久久久久
|
伊人热人久久中文字幕
|
精品国产综合区久久久久久
|
九九久久精品无码专区
|
麻豆精品久久精品色综合
|
色综合久久中文色婷婷
|