实现strong_rc_ptr(比shared_ptr更快的引用计数智能指针)

💡 原文中文,约12800字,阅读约需31分钟。
📝

内容提要

我们的新项目开发了一个全区全服交易行系统,支持高实时性搜索和推荐。为降低搜索开销,我们使用动态和静态索引,但订单变化导致索引刷新影响性能。我们实现了类似Rust的`std::rc::Rc`的非线程安全智能指针,减少CPU缓存失效,提升了10%-16%的性能。未来将继续优化其他模块以减少开销。

🎯

关键要点

  • 新项目开发了全区全服交易行系统,支持高实时性搜索和推荐。
  • 为降低搜索开销,使用动态和静态索引,但订单变化会影响索引刷新性能。
  • 实现了类似Rust的非线程安全智能指针,减少CPU缓存失效,提升了10%-16%的性能。
  • 采用BTree管理有序索引,提高缓存命中率,减少Cache失效带来的浪费。
  • 实现了引用计数型智能指针,优化了多种使用场景,支持自定义Allocator。
  • enable_shared_from_this的实现支持对象自动带share_from_this()接口。
  • 在单元测试中发现std::shared_ptr和boost::shared_ptr的行为差异,调整为更符合直觉的实现。
  • 提供了一键切换组件的能力,方便比较性能差异。
  • 对其他组件进行了适配,支持一键切换,提升整体性能。
  • 未来计划继续优化模块,减少不必要的内部开销。
➡️

继续阅读