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

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>
            亚洲在线中文字幕| 免费成人网www| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品天美传媒入口| 国产精品日韩精品欧美精品| 国产精品久久久久久亚洲毛片| 欧美精品18| 欧美日产国产成人免费图片| 欧美午夜精品理论片a级按摩| 国产精品国产三级欧美二区| 国产一区二区三区自拍| 亚洲二区精品| 亚洲一区二区三区三| 亚洲欧美日韩国产一区二区三区| 久久精品亚洲一区| 欧美激情在线| 亚洲视频第一页| 久久亚洲精品视频| 国产精品99一区| 在线观看福利一区| 亚洲午夜电影在线观看| 久久久精品一区| 夜夜嗨av一区二区三区网页| 亚洲高清视频一区二区| 欧美巨乳在线观看| 国产欧美精品一区aⅴ影院| 亚洲第一视频| 性欧美办公室18xxxxhd| 亚洲第一中文字幕在线观看| 亚洲视频精选在线| 欧美11—12娇小xxxx| 国产日韩欧美在线看| 一本一本久久| 欧美国产一区视频在线观看| 亚洲欧美日本国产专区一区| 欧美另类变人与禽xxxxx| 狠狠色综合网| 久久成年人视频| 99re这里只有精品6| 鲁鲁狠狠狠7777一区二区| 国产视频一区二区在线观看| 亚洲无线观看| 亚洲精品国久久99热| 美女黄网久久| 精品91在线| 久久久av水蜜桃| 欧美一区二区三区精品| 国产精品黄色| 亚洲女同精品视频| 99精品欧美一区| 欧美日韩大片| 夜夜嗨av一区二区三区网页| 亚洲国产一区在线观看| 免费亚洲电影在线观看| 亚洲福利视频二区| 欧美大片一区二区| 美女网站久久| 亚洲精品国偷自产在线99热| 欧美福利视频| 老司机亚洲精品| 最新亚洲视频| 亚洲国产美女| 欧美女同在线视频| 这里只有精品电影| 在线亚洲自拍| 国产精品一区二区三区乱码 | 国产精品欧美一区喷水| 一本到高清视频免费精品| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产一区二区三区久久久| 性伦欧美刺激片在线观看| 亚洲一区二区三区中文字幕| 国产精品国产a级| 欧美一区二区私人影院日本| 欧美大色视频| 欧美高清成人| 欧美福利一区二区三区| 一区二区三区高清| 亚洲欧美一区二区在线观看| 激情成人在线视频| 亚洲国产精品v| 欧美日产在线观看| 亚洲免费网址| 久久久999精品| 日韩一级大片| 亚洲欧美成人一区二区三区| 狠狠入ady亚洲精品| 亚洲国产专区| 国产日产亚洲精品系列| 欧美成人免费全部| 欧美特黄一区| 免费视频亚洲| 国产精品久久久久久影视 | 久久综合成人精品亚洲另类欧美 | 一片黄亚洲嫩模| av不卡在线看| 精品成人一区二区| 一区二区三区欧美成人| 激情久久影院| 中国女人久久久| 亚洲丶国产丶欧美一区二区三区 | 性欧美xxxx大乳国产app| 亚洲国产精品成人一区二区| 亚洲伊人一本大道中文字幕| 亚洲国语精品自产拍在线观看| 亚洲香蕉伊综合在人在线视看| 亚洲大黄网站| 亚洲欧美综合一区| 在线视频精品一区| 玖玖在线精品| 欧美中文在线观看国产| 欧美日韩视频在线一区二区 | 亚洲国产激情| 一区福利视频| 午夜精品免费在线| 亚洲视频欧美视频| 欧美波霸影院| 久久亚洲免费| 国产亚洲精品久久飘花| 亚洲激情不卡| 亚洲国产日韩一区二区| 久久福利精品| 久久成人18免费网站| 国产精品久久久久久久久久久久久久| 亚洲电影免费观看高清完整版| 国内外成人在线| 欧美一区二视频| 久久精品在线观看| 欧美韩国在线| 久久精品二区亚洲w码| 亚洲在线国产日韩欧美| 你懂的成人av| 欧美电影在线观看| 亚洲国产精品激情在线观看| 久久夜色精品国产| 欧美成人免费一级人片100| 亚洲国产高清aⅴ视频| 模特精品在线| 亚洲免费成人| 亚洲欧美综合一区| 国产日韩1区| 鲁鲁狠狠狠7777一区二区| 亚洲高清毛片| 亚洲一区二区三区精品动漫| 国产精品久久久久av免费| 一区二区三区欧美在线| 亚洲欧美日韩国产综合精品二区| 欧美亚洲成人精品| 午夜久久tv| 欧美丰满高潮xxxx喷水动漫| 亚洲人在线视频| 欧美日韩综合视频| 亚洲综合三区| 欧美11—12娇小xxxx| 99精品视频免费| 国产精品丝袜91| 久久嫩草精品久久久精品| 91久久夜色精品国产九色| 亚洲欧美日韩精品久久| 黄色小说综合网站| 欧美久久成人| 先锋影音一区二区三区| 牛牛国产精品| 亚洲视频在线一区| 国产曰批免费观看久久久| 米奇777超碰欧美日韩亚洲| 999亚洲国产精| 久久综合激情| 亚洲欧美卡通另类91av| 黄页网站一区| 欧美日韩亚洲一区二区三区在线| 欧美亚洲视频在线观看| 91久久久亚洲精品| 久久中文字幕一区| 亚洲综合视频1区| 亚洲高清资源综合久久精品| 欧美体内she精视频在线观看| 久久精品国产99精品国产亚洲性色| 亚洲欧洲在线一区| 久久青草久久| 午夜精品久久久久久久男人的天堂| 亚洲福利在线视频| 国产日韩一区欧美| 欧美视频在线视频| 男女激情久久| 欧美在线免费| 亚洲综合国产| 亚洲天堂av高清| 亚洲欧洲综合| 亚洲风情在线资源站| 久久人人精品| 欧美在线不卡视频| 亚洲在线中文字幕| 一区二区三区回区在观看免费视频| 在线精品视频一区二区| 国产一区欧美| 国产日韩精品入口| 国产毛片久久| 国产精品午夜春色av| 欧美系列亚洲系列|