亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

了解C++異常處理的系統開支

2019-11-17 05:45:46
字體:
來源:轉載
供稿:網友
  為了在運行時處理異常,程序要記錄大量的信息。無論執行到什么地方,程序都必須能夠識別出假如在此處拋出異常的話,將要被釋放哪一個對象;程序必須知道每一個入口點,以便從try塊中退出;對于每一個try塊,他們都必須跟蹤與其相關的catch子句以及這些catch子句能夠捕捉的異常類型。這種信息的記錄不是沒有代價的。確保程序滿足異常規格不需要運行時的比較(runtime comparisons),而且當異常被拋出時也不用額外的開銷來釋放相關的對象和匹配正確的catch字句。但是異常處理確是有代價的,即使你沒有使用try,throw或catch要害字,你同樣得付出一些代價?! ∽屛覀兿葟哪悴皇褂萌魏萎惓L幚硖匦砸惨冻龅拇鷥r談起。你需要空間建立數據結構來跟蹤對象是否被完全構造(constrUCted)(參加條款10),你也需要系統時間保持這些數據結構不斷更新。這些開銷一般不是很大,但是當采用不支持異常的方法編譯的程序一般比支持異常的程序運行速度更快所占空間也更小?! ≡诶碚撋希悴荒軐Υ诉M行選擇:C++編譯器必須支持異常,也就是說,當你不用異常處理時你不能讓編譯器生產商消除這方面的開銷,因為程序一般由多個獨立生成的目標文件(object files)組成,只有一個目標文件不進行異常處理并不能代表其他目標文件不進行異常處理。而且即使組成可執行文件的目標文件都不進行異常處理,那么還有它們所連接的程序庫呢?假如程序的任何部分使用了異常,其它部分必須也支持異常。否則在運行時程序就不可能提供正確的異常處理?! 〔贿^這只是理論,實際上大部分支持異常的編譯器生產商都答應你自由控制是否在生成的代碼里包含進支持異常的內容。假如你知道你程序的任何部分都不使用try,throw或catch,并且你也知道所連接的程序庫也沒有使用try,throw或catch,你就可以采用不支持異常處理的方法進行編譯,這可以縮小程序的尺寸和提高速度,否則你就得為一個不需要的特性而付出代價。隨著時間的推移,使用異處理的程序庫開始變得普遍了,上面這種方法將逐漸不能使用,但是根據目前的軟件開發情況來看,假如你已經決定不使用任何的異常特性,那么采用不支持異常的方法編譯程序是一個性能優化的合理方法。同樣這對于想避開異常的程序庫來說也是一個性能優化的好方法,這能保證異常不會從客戶端程序傳遞進程序庫里,不過同時這樣做也會妨礙客戶端程序重定義程序庫中聲明的虛擬函數,并不答應有在客戶端定義的回調函數。  使用異常處理的第二個開銷來自于try塊,無論何時使用它,也就是無論何時你想能夠捕捉異常,那你都得為此付出代價。不同的編譯器實現try塊的方法不同,所以編譯器與編譯器間的開銷也不一樣。粗略地估計,假如你使用try塊,代碼的尺寸將增加5%-10%并且運行速度也同比例減慢。這還是假設程序沒有拋出異常,我這里討論的只是在程序里使用try塊的開銷。為了減少開銷,你應該避免使用無用的try塊?! 【幾g器為異常規格生成的代碼與它們為try塊生成的代碼一樣多,所以一個異常規格一般花掉與tyr塊一樣多的系統開銷。什么?你說你認為異常規格只是一個規格而已,你認為它們不會產生代碼?那么好,現在你應該對此有新的熟悉了?! ‖F在我們來到了問題的核心部分,看看拋出異常的開銷。事實上我們不用太關心這個問題,因為異常是很少見的,這種事件的發生往往被描述為exceptional(異常的,罕見的)。80-20規則(參見條款16)告訴我們這樣的事件不會對整個程序的性能造成太大的影響。但是我知道你仍然好奇地想知道假如拋出一個異常到底會有多大的開銷,答案是這可能會比較大。與一個正常的函數返回相比,通過拋出異常從函數里返回可能會慢三個數量級。這個開銷很大。但是僅僅當你拋出異常時才會有這個開銷,一般不會發生。但是假如你用異常表示一個比較普遍的狀況,例如完成對數據結構的遍歷或結束一個循環,那你必須重新予以考慮?! 〔贿^請等一下,你問我是怎么知道這些事情的呢?假如說支持異常對于大多數編譯器來說是一個較新的特性,假如說不同的編譯器異常方法也不同,那么我如何能說程序的尺寸將增大5%-10%,它的速度也同比例減慢,而且假如有大量的異常被拋出,程序運行速度會呈數量級的減慢呢?答案是令人驚恐的:一些傳聞和一些基準測試(benchmarks)(參見條款23)。事實是大部分人包括編譯器生產商在異常處理方面幾乎沒有什么經驗,所以盡管我們知道異常確實會帶來開銷,卻很難猜測出開銷的準確數量?! ≈斏鞯姆椒ㄊ菍Ρ緱l款所敘述的開銷有了解,但是不深究具體的數量。(即定性不定量 譯者注)不論異常處理的開銷有多大我們都得堅持只有必須付出時才付出的原則。為了使你的異常開銷最小化,只要可能盡量就采用不支持異常的方法編譯程序,把使用try塊和異常規格限制在你確實需要它們的地方,并且只有在確為異常的情況下(exceptional)才拋出異常。假如你在性能上仍然有問題,總體評估一下你的軟件以決定異常支持是否是一個起作用的因素。假如是,那就考慮選擇其它的編譯器,能在C++異常處理方面具有更高實現效率的編譯器。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲电影免费观看高清| 精品久久久久久国产| 伦理中文字幕亚洲| 欧美在线观看一区二区三区| 亚洲欧美在线一区二区| 国产一区二区视频在线观看| 午夜精品三级视频福利| 亚洲一品av免费观看| 中文字幕亚洲一区| 日韩欧美亚洲范冰冰与中字| 久久久久久久爱| 成人黄色av免费在线观看| 亚洲欧美日韩精品久久| 成人网欧美在线视频| 精品久久久久久久久久ntr影视| 久久久精品999| 成人国产在线激情| 精品久久久在线观看| 欧美成年人视频| 午夜精品三级视频福利| 亚洲free性xxxx护士白浆| 日韩在线欧美在线国产在线| 91久久久久久久久久久| 亚洲国产高清福利视频| 久久久久久91| 欧美限制级电影在线观看| 日本高清+成人网在线观看| 中文字幕日本欧美| 在线国产精品播放| 亚洲精品中文字幕有码专区| 亚洲第一福利视频| 美乳少妇欧美精品| 777国产偷窥盗摄精品视频| 亚洲一区美女视频在线观看免费| 久久免费精品日本久久中文字幕| 中文日韩在线视频| 久热在线中文字幕色999舞| 国产香蕉97碰碰久久人人| 欧美国产日本在线| 欧美性受xxx| 欧美成人在线免费| 国产成人精品久久二区二区91| 久久精品久久精品亚洲人| 欧美最猛性xxxx| 国产精品日韩一区| 久久久噜噜噜久久久| 国产成人高清激情视频在线观看| 精品一区二区亚洲| 九九热r在线视频精品| 中文字幕欧美日韩va免费视频| 久久综合亚洲社区| 成人美女免费网站视频| 欧美日韩裸体免费视频| 欧美性猛交xxxx免费看| 亚洲午夜未删减在线观看| 成人免费在线网址| 亚洲最新av在线网站| 日韩av影院在线观看| 国产主播喷水一区二区| 日韩精品中文字幕久久臀| 亚洲视频欧洲视频| 国产69精品久久久| 国产精品久久久久影院日本| 国产精品av在线播放| 亚洲国产三级网| 亚洲欧美国产视频| 欧美成人午夜免费视在线看片| 久久久伊人欧美| 国产欧美日韩中文字幕在线| 久久99久久99精品免观看粉嫩| 久久精品中文字幕| 欧美午夜精品久久久久久久| 日韩精品视频在线免费观看| 日韩欧美一区二区在线| 中文字幕日韩欧美在线| 欧美日韩美女在线| 日产精品久久久一区二区福利| 欧美性理论片在线观看片免费| 国产精品99久久久久久www| 三级精品视频久久久久| 9.1国产丝袜在线观看| 欧美中文字幕在线| 国产成人涩涩涩视频在线观看| 亚洲国产成人精品电影| 欧美最顶级丰满的aⅴ艳星| 亚洲成年网站在线观看| 日韩成人高清在线| 国产97免费视| 国产精品揄拍一区二区| 97热在线精品视频在线观看| 国产精品露脸av在线| 久久影院免费观看| 欧美自拍大量在线观看| 91亚洲一区精品| 91精品久久久久久久久不口人| 中文字幕精品www乱入免费视频| 亚洲乱码国产乱码精品精天堂| 91精品久久久久久久久| 亚洲 日韩 国产第一| 欧美激情日韩图片| 精品视频在线导航| 国产男女猛烈无遮挡91| 草民午夜欧美限制a级福利片| 欧美日韩亚洲91| 亚洲免费人成在线视频观看| 欧美大片va欧美在线播放| 亚洲精品成人免费| 久久精品中文字幕| 亚洲欧美变态国产另类| 91国产精品91| 国产精品久久久久久久久久新婚| 亚洲成人黄色网| 精品香蕉在线观看视频一| 成人激情视频网| 日韩最新免费不卡| 日韩在线观看精品| 中日韩午夜理伦电影免费| 国产精品视频色| 亚洲欧美激情一区| 日韩精品在线私人| 欧美大片在线免费观看| 国产在线精品播放| 亚洲japanese制服美女| 亚洲成人三级在线| 国产精品影片在线观看| 国产精品成人观看视频国产奇米| 国产精品男人的天堂| 亚洲美女久久久| 高清日韩电视剧大全免费播放在线观看| 国产欧美婷婷中文| 日韩精品免费在线视频| 午夜精品久久久久久久白皮肤| 国产欧美精品在线播放| 精品国产拍在线观看| 日韩电视剧免费观看网站| 欧美成aaa人片在线观看蜜臀| 亚洲伊人久久大香线蕉av| 亚洲第一视频在线观看| 亚洲精品久久久久| 久久久久久高潮国产精品视| 日本欧美中文字幕| 国产精品第一页在线| 国产日本欧美在线观看| 日韩av在线影院| 亚洲一区二区三区香蕉| 亚洲激情电影中文字幕| 欧美丰满少妇xxxxx做受| 奇门遁甲1982国语版免费观看高清| 亚洲美女www午夜| 68精品久久久久久欧美| 国产日韩欧美日韩| 久久夜色撩人精品| 亚洲香蕉伊综合在人在线视看| 欧美午夜激情在线| 精品视频一区在线视频| 亚洲偷欧美偷国内偷| 久久中文精品视频| 69视频在线免费观看| 久久国产精品99国产精| 精品欧美国产一区二区三区| 日韩精品视频免费专区在线播放| 色播久久人人爽人人爽人人片视av| 欧美一级电影久久| 国产欧美一区二区三区在线|