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

Bugs

MMORPG game develop.

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


條款15:了解異常處理的系統開銷


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


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


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


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


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


編譯器為異常規格生成的代碼與它們為try塊生成的代碼一樣多,所以一個異常規格一般花掉與try塊一樣多的系統開銷。什么?你說你認為異常規格只是一個規格而已,你認為它們不會產生代碼?那么好,現在你應該對此有新的認識了。


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

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

評論

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

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

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

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

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

哪里有這本書的網上譯文?  回復  更多評論   

# 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按摩| 美日韩丰满少妇在线观看| 亚洲精品视频免费在线观看| 亚洲国产经典视频| 蜜月aⅴ免费一区二区三区| 欧美大片91| 欧美成人午夜| 亚洲男女自偷自拍图片另类| 亚洲男同1069视频| 国内精品久久久久影院优| 鲁大师成人一区二区三区| 欧美多人爱爱视频网站| 亚洲一区二区三区777| 午夜日本精品| 亚洲成人在线| 制服丝袜亚洲播放| 精品不卡一区| 9久草视频在线视频精品| 国产日韩精品在线| 亚洲精品免费网站| 国产视频一区在线| 亚洲日本在线观看| 国产色爱av资源综合区| 亚洲高清久久| 国产视频久久久久| 亚洲欧美日韩另类| 欧美电影免费观看大全| 黄网动漫久久久| 亚洲伦理中文字幕| 国产免费一区二区三区香蕉精| 欧美一区二区三区免费在线看 | 国产一区在线观看视频| 欧美激情视频网站| 国产精品一区视频网站| 亚洲激情在线激情| 国产字幕视频一区二区| 夜夜嗨av一区二区三区中文字幕 | 国产日韩欧美一区二区| 亚洲国产欧美日韩另类综合| 国产乱肥老妇国产一区二| 国产婷婷成人久久av免费高清| 亚洲日韩第九十九页| 午夜免费在线观看精品视频| 亚洲九九精品| 久久人体大胆视频| 久久精品国产久精国产思思| 欧美欧美全黄| 亚洲激情另类| 有码中文亚洲精品| 久久丁香综合五月国产三级网站| 亚洲欧美在线x视频| 欧美日韩在线播| 亚洲理论在线观看| 999亚洲国产精| 欧美黄免费看| 亚洲国产精品电影| 亚洲人成网站999久久久综合| 欧美在线播放一区| 久久久久久久999| 国产有码一区二区| 欧美一区国产在线| 久久久久久香蕉网| 国产日韩精品一区二区| 亚洲国产精品久久91精品| 亚洲在线视频| 亚洲欧美日本伦理| 欧美日韩综合在线| 亚洲精品小视频| 一区二区免费在线视频| 欧美激情乱人伦| 亚洲日本成人在线观看| 亚洲看片一区| 欧美日韩视频专区在线播放 | 亚洲一区黄色| 性视频1819p久久| 国产亚洲一区在线| 久久久久综合网| 亚洲国产精品一区二区第一页 | 欧美日韩在线不卡一区| 日韩亚洲欧美一区二区三区| 亚洲一卡二卡三卡四卡五卡| 国产精品多人| 久久精品免费| 亚洲精品国产精品国自产观看浪潮 | 国产欧美亚洲日本| 欧美一区二区国产| 欧美激情一区二区三区在线视频观看 | 久久福利资源站| 欧美aa在线视频| 日韩亚洲在线| 国产女主播一区二区三区| 久久精品日韩欧美| 亚洲精品国产系列| 新狼窝色av性久久久久久| 黄色亚洲在线| 欧美高清在线观看| 午夜精品久久久久99热蜜桃导演| 另类国产ts人妖高潮视频| 亚洲精品国偷自产在线99热| 国产精品每日更新在线播放网址| 久久精品一区二区三区不卡| 亚洲国产精品一区二区尤物区| 亚洲一区二区三区视频| 亚洲国产精彩中文乱码av在线播放| 欧美精品一区二区视频| 亚欧美中日韩视频| 亚洲精品一区二区三区婷婷月 | 男人的天堂亚洲| 亚洲午夜高清视频| 在线免费观看日韩欧美| 欧美三日本三级少妇三2023| 久久人人97超碰国产公开结果 | 中文精品视频| 久久久久久9999| 欧美高清视频在线播放| 欧美一区二区三区四区视频| 欧美成人午夜激情在线| 国产一区二区三区黄视频| 亚洲一级在线观看| 免费看的黄色欧美网站| 亚洲欧美日韩中文播放| 欧美日韩少妇| 亚洲天堂免费在线观看视频| 免费亚洲电影在线| 久久人91精品久久久久久不卡| 国产精品久久久久久户外露出| 亚洲国产成人在线播放| 欧美在线观看一区| 欧美三日本三级少妇三2023| 毛片av中文字幕一区二区| 乱中年女人伦av一区二区| 久久www成人_看片免费不卡| 久久精品视频导航| 亚洲综合第一页| 亚洲福利国产| 亚洲美女在线看| 国产精品一二一区| 亚洲精品视频一区二区三区| 国产精品v欧美精品∨日韩| 欧美一区二区三区另类| 欧美成人四级电影| 欧美在线观看视频一区二区| 国产一区在线观看视频| 国产欧美在线看| 国产精品久久久一本精品| 欧美日韩国产一区二区三区地区| 久久综合色8888| 噜噜噜91成人网| 久久综合色影院| 美女视频黄a大片欧美| 美国十次成人| 欧美激情一区二区三区在线视频 | 狂野欧美激情性xxxx欧美| 欧美在线视频播放| 久久久久久久成人| 美玉足脚交一区二区三区图片| 久久人人97超碰人人澡爱香蕉| 久久久精品久久久久| 狼人天天伊人久久| 欧美成人首页| 国产精品日韩精品欧美精品| 国产精品草草| 国产一区清纯| 红桃视频亚洲| 欧美在线播放一区二区| 久久久噜噜噜久久久| 欧美va天堂| 国产精品久久久久久久久免费 | 亚洲欧美日韩在线不卡| 久久精品网址| 欧美精品久久久久久久免费观看 | 国产一区二区三区直播精品电影 | 亚洲欧美日韩成人| 久久天天躁狠狠躁夜夜av| 亚洲第一页在线| 一个色综合av| 久久精品av麻豆的观看方式| 欧美成人激情视频免费观看| 国产精品v一区二区三区 | 久久亚洲不卡| 国产精品国产三级国产aⅴ浪潮| 国产一本一道久久香蕉| 亚洲人午夜精品免费| 欧美在线观看一区| 亚洲人成精品久久久久| 香蕉久久一区二区不卡无毒影院 | 久久精品亚洲精品| 欧美香蕉视频| 91久久精品久久国产性色也91| 性欧美xxxx大乳国产app| 欧美激情精品久久久久久黑人 | 欧美激情一区二区三区高清视频| 亚洲一区网站| 欧美视频在线观看免费网址| 亚洲第一精品夜夜躁人人躁|