C 中智慧指針的記憶體和時間開銷
智慧指針,如C 11 中的std::shared_ptr 和std::unique_ptr ,提供自動記憶體管理並簡化所有權語義。然而,一些開發人員可能想知道與傳統指針相比,使用智慧指針對效能的潛在影響。
記憶體開銷:
std::unique_ptr 僅在以下情況下才會施加記憶體開銷:提供了一個重要的刪除器。然而,std::shared_ptr 總是需要額外的記憶體用於引用計數器,儘管數量相對較小。
時間開銷:
std::unique_ptr 在如果需要複製提供的刪除器或需要將指針初始化為null,則需要進行構造,以及在銷毀期間銷毀擁有的物件。
std::shared_ptr 主要在構造期間創建引用計數器、在銷毀期間經歷時間開銷遞減引用計數器並可能破壞對象,並在賦值期間遞增引用計數器。此外,這些增量/減量對於線程安全來說是原子的,進一步增加了開銷。
對效能的影響:
重要的是要注意,沒有一個智慧指針在取消引用期間有時間開銷,這通常是指針最頻繁的操作。
一般來說,與智慧指標相關的開銷很小,不會顯著影響程式碼效能。然而,不斷創建和銷毀智慧指標會引入效能瓶頸。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3