假设我有一个包含3个字符串属性的A类。在整个应用程序中,不必要地多次创建A的新实例。所有类A都使用这3个字符串来执行LINQ查询,如:
where(string1 == this.string1)。Where(string2 == this.string2)。Where(string3 == this.string3)
我不是每次都需要对象创建实例,而是考虑修改使用此类型的类来存储对象的一个实例,然后在每次使用它之前修改字符串属性。这是优化课程的正确方法吗?基本上,我试图避免每次创建实例和为字符串分配内存的开销。
是否有更快的方法来执行上述LINQ查询?
答案 0 :(得分:0)
是的。但除非有足够的这些对象,否则性能上的差异可以忽略不计。
答案 1 :(得分:0)
如果"多次"大约几千,那么我不担心创建对象的性能。只有当你创建这么多时,应用程序才必须经常执行垃圾收集来清理未使用的对象,对于具有3个属性的对象,除非你的字符串非常大,否则需要大约数百万。
您更有可能通过尝试重用对象来创建错误,因为您可能会忘记在重用之间清除对象状态。
尝试重用该对象可能意味着将其移至不必要的更高级别范围。即更改对属性或类似属性的本地引用。
保持代码简单,而不是实现过早优化,这样当您遇到优化非常重要的情况时,您就可以更轻松地实现优化。如果你过度优化你可以想象的一切,那么你最终会得到一个过于复杂的代码库。
<强>更新强>
我正考虑修改使用此类型存储的类 对象的一个实例,然后修改字符串属性 每次使用之前。这是优化的正确方法吗? 类?
你并没有在内存分配方面节省太多。由于每次都要分配新的字符串,因此大多数分配都是在创建字符串时,而不是在创建对象时。
外部对象只包含3个以上的指针。
无论是否重复使用同一个对象,大多数内存分配都是每次创建字符串。
如果您打算进行优化,那么您的工作应该集中在最有利的地方。致力于优化的努力应从分析开始,以确定慢点的位置。这意味着优化那些被测量为问题区域的东西。