【问题标题】:Does property allocate memory with `get` only? [duplicate]属性是否仅使用 `get` 分配内存? [复制]
【发布时间】:2018-01-03 14:38:51
【问题描述】:

例如,

public int Health { get; set; }

分配 4 个字节。

public int Health { get { return ..... } } 会分配内存吗?

或者它只是一个返回int值的方法?

【问题讨论】:

  • 它只是一个返回int值的方法。但你为什么在乎?您是否正在使用 1980 年制造的机器,当时只有 4 个字节?
  • @ZoharPeled 我有 2 个选项,创建一些字段属性,因为它们的值可以从公式计算或从服务器发送计算值并使用它们。我想从服务器减小包的大小,同时保持属性的语法而不是制作很多方法。
  • @CandidMoon 总共有多少字节,您是否希望通过在每个属性上节省四个字节来减少“来自服务器的包的大小”(?)? 10? 100? 1,000? 10,000?只是一个粗略的数量级估计。
  • @CandidMoon 你不能同时拥有它。要么它是一个足够大的性能影响,它可以微不足道地衡量,要么它不是一个性能影响,你可以忽略它。如果不能轻松衡量,就不可能既是有影响力的性能变化。
  • @CandidMoon 整个答案是对您问题的回答。它只包含两个句子。我相信您可以阅读这两个句子,而不是假设问题不会在没有阅读它们的情况下回答您的问题。如果真的超过40个字,那我的犹豫也许能理解……

标签: c# memory properties


【解决方案1】:

计算属性不会增加每个实例的分配大小,就像添加方法不需要额外的每个实例内存一样。

我有 2 个选项,创建一些字段属性,因为它们的值可以从公式计算或从服务器发送计算值并使用它们。我想从服务器减小包的大小,同时保持属性的语法而不是制作很多方法。

这是一种常见的权衡,您可以决定使用内存来减少 CPU 使用,或者存储更多数据以节省计算。答案取决于您对内存、CPU 使用和网络的限制,并且需要对这两个选项进行分析。

如果服务器计算它发送给您的值,而不是向您发送存储值,则权衡变得更加复杂。由于您在服务器和客户端上都有相同的计算,因此保持两者同步成为维护责任。

【讨论】:

  • 感谢您的回答。现在我的 CPU 性能没有问题,但我想减少从服务器获取数据所需的时间。另外,我不需要编写额外的代码来填充服务器端的字段。我检查服务器上的所有值是否正确,或者只是使用存储在服务器上的值。
猜你喜欢
  • 1970-01-01
  • 2016-03-04
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多