首頁 >後端開發 >C++ >`&as;` 是否總是透過可空類型提供效能提升?

`&as;` 是否總是透過可空類型提供效能提升?

Susan Sarandon
Susan Sarandon原創
2025-01-07 09:27:40217瀏覽

Does `&as;` Always Offer Performance Gains with Nullable Types?

「&as」的效能陷阱;且可為空白型

使用「&as;」時,常常會想到透過簡潔的語法來提高效能。操作員。然而,正如最近的基準測試所證明的那樣,該運算符可能並不總是能夠為可空類型提供預期的最佳化。

基準測試揭示了「&as;」、「&is;」之間意外的效能差異。其次是鑄造,甚至是 LINQ 解決方案。令許多人驚訝的是,遺產“&is;”方法優於“&as;”,相差 20 倍。這就提出了一個問題:為什麼「&as;」會如此緩慢?

根本原因在於 JIT 編譯器產生的程式碼。對於“&is;”,快速類型檢查和拆箱就足夠了。另一方面,由於裝箱整數與 Nullable 之間的不匹配,「&as;」會呼叫 CLR 輔助函數進行值轉換。交涉。這種額外的開銷可能涉及數百條指令,會對效能造成重大影響。

儘管 LINQ 解決方案由於迭代器的原因預計會落後,但其相對於“&as;”的緩慢程度令人費解。可能的罪魁禍首可能是 ngen.exe 最佳化。

總之,而「&as;」提供語法便利,但在效能敏感的場景中必須仔細考慮其與可空類型的效能權衡。

以上是`&as;` 是否總是透過可空類型提供效能提升?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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