gpt4 book ai didi

c++ - 设计一个 C++ 类,其中包含很少在拷贝中访问的大型成员?

转载 作者:行者123 更新时间:2023-11-28 03:30:04 25 4
gpt4 key购买 nike

由于性能问题,我正在尝试重构一些 C++ 代码,我想知道解决这个问题的最佳方法。我有一个类 DataGatherer,它是大型系统的核心组件。此类被序列化并通过数据流发送,复制并存储到表中,复制是为了并发( checkout 拷贝而不是访问原始 DataGatherer 对象)。我列出示例只是为了让您知道它具有同时使用的复制和赋值运算符。

问题在于 DataGatherer 对象可能变得非常大,因为它们实质上包含大量收集的数据以及有关数据的统计信息和元数据。在许多情况下,只需要统计数据和元数据,而不是后端数据收集。

是否有任何设计模式可能对这里有帮助?也许更普遍的问题是,如果在大多数情况下您只需要一个对象的一部分,但该对象在内部紧密耦合以致于几乎不可能将其拆分,您会怎么做?

我的想法,

  • 将类拆分为 DataGatherer 类和指向 DataGathererBackend 对象的指针。在大多数情况下返回浅拷贝以避免在不使用时复制 DataGathererBackend 的所有开销。我讨厌这样做,因为当你想要一个浅拷贝与当你想要一个深拷贝时,处理所有的麻烦,而且只是一般的困惑形式不得不求助于后端对象具有 NULL 指针的 DataGatherer 对象,因为它不是在这些情况下需要。

  • 将类拆分为 DataStatistics 和 Data,并创建一个包装并包含两者的第三类。

  • 其他想法?

最佳答案

如果只需要统计数据,您可以按值或常量引用返回一个统计数据结构,并将检索从复制运算符更改为调用统计数据获取函数。

关于c++ - 设计一个 C++ 类,其中包含很少在拷贝中访问的大型成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com