对象创建开销是否适用于结构?

use*_*285 0 c# performance struct creation object

我在C#中要求一个项目,但我认为这个问题也适用于其他语言.我听说大量的对象创建和破坏会导致大量的开销和性能问题.我想知道我是否可以通过简单地使用结构而不是对象来解决这个问题.

Ian*_*Ian 5

"使结构而不是对象" - 正如你所说的那样(我认为你的意思是对象)很可能没​​有什么帮助,因为创建结构实例,由于结构的性质,需要你通过值来引用它而不是通过引用 - 这可能(并不总是)使你的记忆使用更重

话虽这么说,你可能需要的是Flyweight Design Pattern


来自https://sourcemaking.com/design_patterns/flyweight:

Flyweight设计模式

意图

使用共享可以有效地支持大量细粒度对象.

使用轻量级小工具替换重量级小部件的Motif GUI策略.

问题

将对象设计到最低级别的系统"粒度"可提供最佳灵活性,但在性能和内存使用方面可能会令人无法接受.

讨论

Flyweight模式描述了如何共享对象以允许它们以细粒度使用而不会产生过高的成本.每个"flyweight"对象分为两部分:状态依赖(外在)部分和状态无关(内部)部分.内部状态在Flyweight对象中存储(共享).外部状态由客户端对象存储或计算,并在调用其操作时传递给Flyweight.