簡體   English   中英

在現代 C++ 中,侵入式容器是否仍然比非侵入式容器具有性能優勢?

[英]Do Intrusive containers still have performance advantages over non-intrusive ones in modern C++?

Boost.Intrusive容器是否仍然比現代 C++ 中的非侵入式標准( std:: )容器具有性能優勢(具有移動語義、 emplace_back等)?

是的,即使將移動語義與 STL 容器一起使用,侵入式容器仍有許多優點。 特別是,內存局部性可能會更好,這在某些情況下可以產生很大的性能提升。 此外,迭代器仍然可以受益匪淺,避免任何來自異常的開銷可以加快插入/刪除操作。

考慮來自 Boost 參考的侵入式和非侵入式容器部分的表 19.1。 這些優勢中的大部分可能仍然存在,例如:

  • 插入/擦除時間
  • 內存位置
  • 異常保證
  • 從值計算迭代器
  • 內存使用

Boost 文檔有詳細的性能指標,顯示了不同場景下各種操作的相對性能。 如果您考慮其中哪些主要不受分配的影響,則仍有相當大的潛力。

當然,最終性能和優化問題將主要取決於您的特定應用程序,因此不建議對“最佳”或“最快”方法進行概括性陳述。 分析您的特定代碼並評估額外復雜性所涉及的權衡是無可替代的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM