“as”和可空類型的性能驚喜
背景
背景“ C# 中的運算子允許動態類型檢查和安全轉換。與傳統的“is”運算符後跟強制轉換相比,這可能會提高效能。然而,在最近的測試案例中觀察到了意外的效能結果。
測試應用程式和結果開發了一個測試應用程式來對包含空引用的物件數組中的整數進行求和、字串引用和裝箱整數。該應用程式使用了三種方法:「Cast」(C# 1 等效項)、「As」(使用「as」運算子)和「LINQ」(使用 OfType() 擴充方法)。令人驚訝的是,「Cast」方法明顯快於「As」方法,而「As」方法又比「LINQ」方法稍慢。
分析JIT 編譯器可以為「Cast」方法產生高效率的程式碼,因為它利用記憶體中值轉換。物件只能拆箱為與裝箱值類型相同的變量,這簡化了轉換過程。
「As」方法需要轉換為 Nullable
以上是為什麼 C# 的「as」運算子在此可空整數求和測試中比傳統轉換慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!