【发布时间】:2016-01-31 14:09:21
【问题描述】:
假设我有包含 3 个字符串属性的 A 类。在整个应用程序中不必要地创建了 A 的新实例数次。 A 类所做的就是使用这 3 个字符串来执行 LINQ 查询,例如:
Where(string1 == this.string1).Where(string2 == this.string2).Where(string3 == this.string3)
我不是在每次需要对象时都创建一个实例,而是考虑修改使用这种类型的类来存储对象的一个实例,然后在每次使用它之前修改字符串属性。这是优化课程的正确方法吗?基本上,我试图避免每次创建实例和为字符串分配内存的开销。
是否有更快的方法来执行上述 LINQ 查询?
【问题讨论】:
-
您需要编写两个选项并测量性能。
-
“包含”三个字符串的类很小,因为字符串本身并不“包含”。您需要了解类是如何存储的,字符串是如何存储的,您需要了解字符串实习,您需要了解垃圾收集以及 GC0、1 和 2 的成本。然后也许您将准备好考虑优化这个类。
-
创建不同的字符串很可能比创建您的持有实例更昂贵。也就是说,除非字符串很大,否则这听起来像是过早的优化。不要试图猜测性能问题。衡量然后优化。
标签: c# string performance