力為的技術博客
聯系
聚合
管理
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 © 力為
久久国产色AV免费观看
|
国产Av激情久久无码天堂
|
99久久做夜夜爱天天做精品
|
久久国产一片免费观看
|
久久人人爽人人爽人人av东京热
|
久久99精品国产麻豆蜜芽
|
久久受www免费人成_看片中文
|
久久亚洲精精品中文字幕
|
久久久精品无码专区不卡
|
精品无码久久久久久尤物
|
日日狠狠久久偷偷色综合0
|
成人久久精品一区二区三区
|
久久笫一福利免费导航
|
91超碰碰碰碰久久久久久综合
|
久久www免费人成看片
|
女同久久
|
久久久99精品一区二区
|
日本道色综合久久影院
|
久久综合亚洲欧美成人
|
2021最新久久久视精品爱
|
国内精品久久久久影院网站
|
一本色道久久88综合日韩精品
|
久久99国产精一区二区三区
|
亚洲精品乱码久久久久66
|
色婷婷久久综合中文久久一本
|
久久国产色AV免费观看
|
人妻无码αv中文字幕久久琪琪布
|
久久噜噜久久久精品66
|
久久AⅤ人妻少妇嫩草影院
|
国产精品视频久久
|
国产精品久久久久久搜索
|
久久A级毛片免费观看
|
69久久夜色精品国产69
|
99久久久国产精品免费无卡顿
|
亚洲va中文字幕无码久久不卡
|
久久婷婷国产剧情内射白浆
|
四虎影视久久久免费观看
|
伊人久久大香线蕉综合热线
|
亚洲日本va午夜中文字幕久久
|
亚洲精品无码久久久久sm
|
久久永久免费人妻精品下载
|