首頁 >後端開發 >C++ >C 異常仍然是效能瓶頸嗎?

C 異常仍然是效能瓶頸嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-02 13:41:09448瀏覽

Are C   Exceptions Still a Performance Bottleneck?

C 中的異常仍然很慢嗎?

Andrei Alexandrescu 聲稱 C 異常非常緩慢引起了人們對其在 C 98 中的效率的擔憂。然而,目前的異常處理模型(稱為零成本模型異常)解決了這個問題

在零成本模型中,編譯器建立一個側表,將可能拋出異常的點映射到處理程序列表。當異常發生時,該表用於確定適當的處理程序並展開堆疊。這個過程比在每個點明確檢查異常要快得多。

與傳統的if(錯誤)策略相比,零成本模型:

  • 沒有異常時免費發生
  • 發生異常時,成本約為if 語句的10 倍到20 倍發生

但是,由於快取未命中和RTTI開銷等因素,效能測量可能具有挑戰性。

在異常路徑上緩慢

儘管效率有所提高,異常路徑上的異常處理仍然很慢。然而,與對大多數程式碼路徑進行明確檢查相比,它們的速度優勢通常會抵消這一點。

可讀性與效能

無論效能考量如何,程式碼可讀性都應該優先考慮。當呼叫者不能或不希望在本地處理故障時,應使用異常。然而,C 11 標準允許檢查引用,從而為異常處理提供更受控制的方法。

結論

雖然異常可能不會很快,但它們的性能影響與它們為可讀性和代碼組織提供的好處相比,這是微乎其微的。開發人員應該優先考慮程式碼的清晰度和易於維護性,而不是過早的最佳化問題。

以上是C 異常仍然是效能瓶頸嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn