C 中的異常仍然很慢嗎?
Andrei Alexandrescu 聲稱 C 異常非常緩慢引起了人們對其在 C 98 中的效率的擔憂。然而,目前的異常處理模型(稱為零成本模型異常)解決了這個問題
在零成本模型中,編譯器建立一個側表,將可能拋出異常的點映射到處理程序列表。當異常發生時,該表用於確定適當的處理程序並展開堆疊。這個過程比在每個點明確檢查異常要快得多。
與傳統的if(錯誤)策略相比,零成本模型:
但是,由於快取未命中和RTTI開銷等因素,效能測量可能具有挑戰性。
在異常路徑上緩慢
儘管效率有所提高,異常路徑上的異常處理仍然很慢。然而,與對大多數程式碼路徑進行明確檢查相比,它們的速度優勢通常會抵消這一點。
可讀性與效能
無論效能考量如何,程式碼可讀性都應該優先考慮。當呼叫者不能或不希望在本地處理故障時,應使用異常。然而,C 11 標準允許檢查引用,從而為異常處理提供更受控制的方法。
結論
雖然異常可能不會很快,但它們的性能影響與它們為可讀性和代碼組織提供的好處相比,這是微乎其微的。開發人員應該優先考慮程式碼的清晰度和易於維護性,而不是過早的最佳化問題。
以上是C 異常仍然是效能瓶頸嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!