我的問題很簡單:我想知道處理器是否嘗試以某種方式幫助異常處理。如果在設計處理器「異常就緒」時有足夠的努力,是否有可能完全消除異常處理和投擲的開銷?處理器是否有實際的電路來幫助異常處理?
因爲據我所知,所有異常處理都是通過軟件來完成的,而且這總是會增加一些開銷。我錯了嗎?
- 編輯
所以,感謝下面的所有答案。我很感激。你已經回答了我的問題。
但是我只是想澄清一下爲什麼我這樣問:一般來說,人們不會過分深入優化異常,因爲他們都認爲「異常是爲了特殊情況」,因此它們不是瓶頸。
我不認爲只有在戲劇性的情況下才會拋出異常。我認爲,基本上,任何時候一個函數都不能遵守它承諾做的事情時應該拋出一個異常。
如果我說:
doSomethingImportant();
而且如果任何原因「重要的事情」不能這樣做,這應該拋出異常。
當然,doSomethingImportant()可能無法遵守,因爲系統內存不足(一個戲劇性的問題),但我認爲我們應該能夠建立更簡單的模型「我現在不能這樣做/現在,抱歉「進入我們的軟件,嵌入到我們的設計中。我想說,我認爲例外可以是例外,是的,但他們預計像正常的軟件流程,而不是作爲系統必須「恢復」,nomsain「致命錯誤」?
雖然通過漂亮的數據中心支持大的應用程序將未落瓶頸,因爲異常處理,請不要忘記還有市場在資源計算的嵌入式設備,和異常處理不產生影響(這是什麼我瞄準)。
我個人覺得異常很有表現力,我想在嵌入式設備中使用它們,儘可能多的「開銷」,因爲我會返回「-1」並用「if」來檢查它。
異常總是會很慢,因爲它們按照定義*異常*,而使事情快速的方法是針對常見情況進行優化,而不是例外情況。 – hobbs 2011-12-25 08:11:17