【发布时间】:2009-08-19 22:06:02
【问题描述】:
这更像是一个关于性能的学术问题,而不是一个现实的“我应该使用什么”,但我很好奇,因为我根本没有涉足 IL 来查看构建了什么,而且我没有大型数据集手头上的配置文件。
那么哪个更快:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
foreach (MyObject o in objs)
{
if (o.Field == "something")
strings.Add(o.Field);
}
或:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
string s;
foreach (MyObject o in objs)
{
s = o.Field;
if (s == "something")
strings.Add(s);
}
请记住,我并不是真的想知道 string.Add(s) 对性能的影响(因为需要执行的任何操作都无法真正更改),只是设置 s each 之间的性能差异迭代(假设 s 可以是任何原始类型或字符串)与每次迭代调用对象上的 getter 相比。
【问题讨论】:
-
你为什么要问我们?你已经编写了代码。拿出一个秒表,双向运行十亿次,然后你就会知道哪个更快。
标签: c# performance