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

Bugs

MMORPG game develop.

[引用]More Effective C++ 條款15


條款15:了解異常處理的系統(tǒng)開銷


為了在運行時處理異常,程序要記錄大量的信息。無論執(zhí)行到什么地方,程序都必須能夠識別出如果在此處拋出異常的話,將要被釋放哪一個對象;程序必須知道每一個入口點,以便從try塊中退出;對于每一個try塊,他們都必須跟蹤與其相關(guān)的catch子句以及這些catch子句能夠捕獲的異常類型。這種信息的記錄不是沒有代價的。確保程序滿足異常規(guī)格不需要運行時的比較(runtime comparisons),而且當異常被拋出時也不用額外的開銷來釋放相關(guān)的對象和匹配正確的catch字句。但是異常處理確是有代價的,即使你沒有使用try,throw或catch關(guān)鍵字,你同樣得付出一些代價。


讓我們先從你不使用任何異常處理特性也要付出的代價談起。你需要空間建立數(shù)據(jù)結(jié)構(gòu)來跟蹤對象是否被完全構(gòu)造(constructed)(參加條款10),你也需要系統(tǒng)時間保持這些數(shù)據(jù)結(jié)構(gòu)不斷更新。這些開銷一般不是很大,但是當采用不支持異常的方法編譯的程序一般比支持異常的程序運行速度更快所占空間也更小。


在理論上,你不能對此進行選擇:C++編譯器必須支持異常,也就是說,當你不用異常處理時你不能讓編譯器生產(chǎn)商消除這方面的開銷,因為程序一般由多個獨立生成的目標文件(object files)組成,只有一個目標文件不進行異常處理并不能代表其他目標文件不進行異常處理。而且即使組成可執(zhí)行文件的目標文件都不進行異常處理,那么還有它們所連接的程序庫呢?如果程序的任何部分使用了異常,其它部分必須也支持異常。否則在運行時程序就不可能提供正確的異常處理。


不過這只是理論,實際上大部分支持異常的編譯器生產(chǎn)商都允許你自由控制是否在生成的代碼里包含進支持異常的內(nèi)容。如果你知道你程序的任何部分都不使用try,throw或catch,并且你也知道所連接的程序庫也沒有使用try,throw或catch,你就可以采用不支持異常處理的方法進行編譯,這可以縮小程序的尺寸和提高速度,否則你就得為一個不需要的特性而付出代價。隨著時間的推移,使用異處理的程序庫開始變得普遍了,上面這種方法將逐漸不能使用,但是根據(jù)目前的軟件開發(fā)情況來看,如果你已經(jīng)決定不使用任何的異常特性,那么采用不支持異常的方法編譯程序是一個性能優(yōu)化的合理方法。同樣這對于想避開異常的程序庫來說也是一個性能優(yōu)化的好方法,這能保證異常不會從客戶端程序傳遞進程序庫里,不過同時這樣做也會妨礙客戶端程序重定義程序庫中聲明的虛擬函數(shù),并不允許有在客戶端定義的回調(diào)函數(shù)。


使用異常處理的第二個開銷來自于try塊,無論何時使用它,也就是無論何時你想能夠捕獲異常,那你都得為此付出代價。不同的編譯器實現(xiàn)try塊的方法不同,所以編譯器與編譯器間的開銷也不一樣。粗略地估計,如果你使用try塊,代碼的尺寸將增加5%-10%并且運行速度也同比例減慢。這還是假設程序沒有拋出異常,我這里討論的只是在程序里使用try塊的開銷。為了減少開銷,你應該避免使用無用的try塊。


編譯器為異常規(guī)格生成的代碼與它們?yōu)?span>try塊生成的代碼一樣多,所以一個異常規(guī)格一般花掉與try塊一樣多的系統(tǒng)開銷。什么?你說你認為異常規(guī)格只是一個規(guī)格而已,你認為它們不會產(chǎn)生代碼?那么好,現(xiàn)在你應該對此有新的認識了。


現(xiàn)在我們來到了問題的核心部分,看看拋出異常的開銷。事實上我們不用太關(guān)心這個問題,因為異常是很少見的,這種事件的發(fā)生往往被描述為exceptional(異常的,罕見的)。80-20規(guī)則(參見條款16)告訴我們這樣的事件不會對整個程序的性能造成太大的影響。但是我知道你仍舊好奇地想知道如果拋出一個異常到底會有多大的開銷,答案是這可能會比較大。與一個正常的函數(shù)返回相比,通過拋出異常從函數(shù)里返回可能會慢三個數(shù)量級。這個開銷很大。但是僅僅當你拋出異常時才會有這個開銷,一般不會發(fā)生。但是如果你用異常表示一個比較普遍的狀況,例如完成對數(shù)據(jù)結(jié)構(gòu)的遍歷或結(jié)束一個循環(huán),那你必須重新予以考慮。

posted on 2008-03-27 17:06 Bugs 閱讀(1014) 評論(4)  編輯 收藏 引用

評論

# re: [引用]More Effective C++ 條款15 2008-03-27 17:14 Bugs

我自己對異常處理的心得有下列幾點,僅供參考,希望大家說說各自的意見。
1.盡量避免使用異常處理,能不能則不用,可以用C Style的Error處理方式來代替。(對于渴望性能很實用)
2.即使要使用,也一定把Scope降到最低,盡量減少多重嵌套。
3.如果整個生產(chǎn)系統(tǒng)使用了不穩(wěn)定的第三方庫,建議使用異常處理,畢竟服務器穩(wěn)定勝于性能。  回復  更多評論   

# re: [引用]More Effective C++ 條款15 2008-03-31 22:41 Fox

對異常處理沒有特別關(guān)注過,搬著板凳先看到  回復  更多評論   

# re: [引用]More Effective C++ 條款15 2008-04-01 15:11 酷勤網(wǎng)

哪里有這本書的網(wǎng)上譯文?  回復  更多評論   

# re: [引用]More Effective C++ 條款15 2008-04-03 13:58 Bugs

不知道,你去找找吧  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产女主播一区| 国产欧美视频一区二区三区| 久久香蕉国产线看观看网| 午夜精品久久久久久99热| 国产精品视频999| 国产三级欧美三级| 欧美亚洲不卡| 国产精品亚洲人在线观看| 国产精品入口尤物| 国产欧美二区| 亚洲国产欧美日韩另类综合| 在线观看亚洲一区| 亚洲国产欧美另类丝袜| 国产日韩欧美自拍| av成人激情| 久久久久久九九九九| 免费在线观看日韩欧美| 亚洲深夜影院| 久久精品视频亚洲| 欧美激情一区二区三区| 国产亚洲一级| 蜜臀av性久久久久蜜臀aⅴ| 一本色道久久综合狠狠躁篇的优点| 国产日本欧美视频| 欧美日韩日日骚| 一本色道久久综合亚洲精品高清| 在线视频亚洲一区| 亚洲国产一区二区精品专区| 在线性视频日韩欧美| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲永久网站| 亚洲第一免费播放区| 午夜精品久久久久久久男人的天堂 | 国产热re99久久6国产精品| 亚洲精品资源美女情侣酒店| 午夜精品久久久久久久99黑人| 亚洲综合视频网| 久久久久一区二区| 亚洲精品一区二| 亚洲区一区二| 久久九九免费视频| 国产精品劲爆视频| 欧美黄色aa电影| 伊人狠狠色j香婷婷综合| 欧美午夜寂寞影院| 亚洲欧美一区二区原创| 久久久国产精品一区二区三区| 国产欧美精品日韩精品| 亚洲韩国日本中文字幕| 亚洲精品乱码久久久久久| 亚洲精品1区| 亚洲综合第一页| 在线一区二区三区四区| 国产真实乱偷精品视频免| 亚洲精品久久嫩草网站秘色| 99精品免费网| 一区二区三区国产| 久久综合婷婷| 欧美午夜性色大片在线观看| 最新亚洲激情| 先锋影音久久久| 欧美亚洲专区| 国语自产偷拍精品视频偷| 亚洲一区图片| 免费观看成人网| 夜夜爽99久久国产综合精品女不卡| 最新国产乱人伦偷精品免费网站| 欧美日韩国产小视频在线观看| 亚洲尤物视频在线| 久久人人97超碰人人澡爱香蕉| 一区二区三区高清视频在线观看| 国产精品毛片在线看| 亚洲久色影视| 欧美激情亚洲激情| 亚洲香蕉伊综合在人在线视看| 蜜桃av噜噜一区二区三区| 能在线观看的日韩av| 欧美日韩不卡在线| 亚洲福利在线看| 一本色道久久综合亚洲91| 亚洲精品乱码久久久久久日本蜜臀 | 狠狠久久亚洲欧美专区| 久久成人精品无人区| 91久久国产自产拍夜夜嗨| 久久久久欧美精品| 久久综合伊人| 亚洲精品欧美一区二区三区| 欧美人与禽性xxxxx杂性| 亚洲免费成人av| 欧美一区二区观看视频| 国外成人在线视频网站| 欧美va天堂| 亚洲一区亚洲二区| 亚洲夫妻自拍| 亚洲免费在线| 亚洲缚视频在线观看| 欧美日本一区二区三区| 欧美在线影院在线视频| 亚洲精品免费在线播放| 欧美一区二区三区免费观看视频| 亚洲一区二区综合| 国产精品视频1区| 亚洲日韩成人| 伊人久久久大香线蕉综合直播| 亚洲一区二区三区免费视频| 久久久免费观看视频| 精东粉嫩av免费一区二区三区| 亚洲国产成人久久综合一区| 美女国产一区| 一区二区电影免费在线观看| 亚洲欧美日韩在线观看a三区 | 久久精品国产免费观看| 亚洲国产成人高清精品| 欧美日韩免费在线| 美女视频黄免费的久久| 欧美激情一区二区三区成人| 最新国产乱人伦偷精品免费网站| 麻豆国产精品va在线观看不卡| 久久精品首页| 欧美激情女人20p| 午夜欧美电影在线观看| 国产欧美精品| 亚洲国产网站| 欧美日韩不卡| 欧美成人综合网站| 欧美日韩在线综合| 免费视频一区| 欧美亚州韩日在线看免费版国语版| 欧美伊人久久大香线蕉综合69| 嫩草国产精品入口| 免费一区二区三区| 国产亚洲一区二区三区在线播放| 在线视频亚洲| 亚洲一区二区三区精品视频| 久久精品亚洲一区| 欧美在线一区二区| 国产区日韩欧美| 先锋影音国产一区| 欧美在线不卡| 国产日韩欧美综合一区| 亚洲深夜av| 亚洲欧美日韩国产综合在线 | 国产主播一区| 性色av一区二区三区| 久久精彩视频| 韩国欧美一区| 久久精品夜色噜噜亚洲aⅴ| 久久影视精品| 亚洲国产一区二区三区a毛片| 欧美不卡视频一区发布| 亚洲日韩欧美视频| 亚洲欧美成人在线| 国产亚洲欧美一区| 久久久蜜桃一区二区人| 亚洲国产午夜| 欧美一区二区三区在线观看| 国产伊人精品| 欧美第十八页| 亚洲在线一区二区三区| 久久午夜影视| aa国产精品| 国产精品一区一区| 老妇喷水一区二区三区| 亚洲免费观看高清完整版在线观看熊| 亚洲一区二区三区在线播放| 国产一级揄自揄精品视频| 蜜桃精品久久久久久久免费影院| 亚洲人成网在线播放| 欧美一区二区三区四区在线观看| 在线日韩电影| 国产精品久久999| 久久亚洲影音av资源网| 99精品国产在热久久下载| 久久综合激情| 亚洲色图综合久久| 娇妻被交换粗又大又硬视频欧美| 欧美极品在线播放| 性亚洲最疯狂xxxx高清| 欧美中文字幕| 亚洲精品欧美日韩| 久久综合色8888| 亚洲一区二区免费视频| 亚洲福利电影| 国产啪精品视频| 欧美日韩国产综合网| 久久午夜视频| 亚洲欧美日韩在线高清直播| 亚洲国产精品久久久久秋霞蜜臀 | 最新亚洲电影| 亚洲一区二区黄色| 国产片一区二区| 免费观看一区| 亚洲深夜激情| 亚洲国产日韩在线一区模特| 久久综合九色综合久99| 欧美一区二区三区在线播放| 亚洲一区久久久| 亚洲一区二区黄色| 在线视频一区二区| 日韩网站在线观看|