力為的技術博客
聯系
聚合
管理
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)
積分與排名
積分 - 709288
排名 - 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 © 力為
国产精品9999久久久久
|
国产欧美久久一区二区
|
国产高清美女一级a毛片久久w
|
996久久国产精品线观看
|
久久天天躁狠狠躁夜夜躁2014
|
久久精品国产亚洲Aⅴ蜜臀色欲
|
久久久噜噜噜www成人网
|
亚洲国产天堂久久久久久
|
国产精品伊人久久伊人电影
|
久久国产精品久久久
|
2021少妇久久久久久久久久
|
91精品国产综合久久久久久
|
久久精品国产亚洲AV无码麻豆
|
久久人妻无码中文字幕
|
久久午夜福利无码1000合集
|
一级做a爰片久久毛片免费陪
|
欧美久久久久久精选9999
|
久久久久久一区国产精品
|
久久久无码精品午夜
|
久久亚洲精品成人无码网站
|
伊人久久大香线焦AV综合影院
|
色欲久久久天天天综合网
|
久久亚洲精品无码AV红樱桃
|
日本欧美久久久久免费播放网
|
亚洲精品午夜国产VA久久成人
|
久久精品人人做人人爽电影蜜月
|
99国产欧美久久久精品蜜芽
|
情人伊人久久综合亚洲
|
久久亚洲中文字幕精品一区
|
久久久国产视频
|
国产成人精品白浆久久69
|
精品国产一区二区三区久久蜜臀
|
色婷婷噜噜久久国产精品12p
|
亚洲人成精品久久久久
|
精品精品国产自在久久高清
|
精品久久综合1区2区3区激情
|
久久亚洲精品无码VA大香大香
|
久久精品国产99久久无毒不卡
|
91精品无码久久久久久五月天
|
色欲综合久久躁天天躁
|
久久久无码人妻精品无码
|