【问题标题】:Reducing unnecessary same values in Class member variables减少类成员变量中不必要的相同值
【发布时间】:2011-02-28 04:28:29
【问题描述】:
class A
{
 public int a;
 public int c;
}

我将从 A 创建 10 个实例。然后我将再次从 A 创建 15 个实例……继续。前 10 个实例对变量具有相同的值,接下来的 15 个实例对 a 具有相同的值。但我并不是说两个组对 a 具有相同的值。问题是在第一组和 15 中创建相同的值 10 次第二组的记忆次数是不必要的。

在这种情况下,减少不必要数据的最佳解决方案是什么?

【问题讨论】:

  • 我不知道它与语言有关。如果真的是相关的,那么 c# 或 java 可以。
  • 是的,它和语言也有点关系。在 C 中我们可以使用指针,对于 .net 我们也可以使用指针。但是编写不安全的代码并不吸引我。

标签: class memory optimization member


【解决方案1】:

如果ac 实际上只是整数,那么你就不值得花时间在内存空间中优化它们;在大多数情况下,你用来做的任何事情都会比整数本身占用更多的空间。

但是,如果 ac 实际上是占用大量内存的对象,则可以将对象指针(或持有者,取决于语言)作为 A 的成员而不是对象他们自己。这样指针中唯一重复的内存。

【讨论】:

  • 对象指针表示引用类型变量?如果是这样,我在下面给出了类似的答案。但我不知道重新定义成员需要多少空间。
  • 对现有对象的引用通常只是指针,并且占用少量内存。
【解决方案2】:

很明显,静态成员不适用于这个问题。因为实例组将具有不同的值。

这可能是解决方案之一。其他还有什么?

class Common
{
  public int a;
}
class A
{
  public Common a;
  public int c;
}

【讨论】:

    【解决方案3】:

    另一种解决方案是

    class A
    {
      public int? a;
      public int c;
    }
    

    但不是创建 int 的新实例?类我们应该分配相同的实例。但是铸造int? to int 使用起来会很丑陋并导致性能问题。

    【讨论】:

      【解决方案4】:

      HashSet<T> 有帮助吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-13
        相关资源
        最近更新 更多