【发布时间】:2011-07-06 12:08:56
【问题描述】:
我正在查看我正在开发的网站的性能,并且发现了一些我编写的代码:
foreach (WorkItem wi in p.getWorkItems(dateFrom, dateTo))
{
someFunction(wi);
}
在上面的代码中,p.getWorkItems 方法是否在每次循环执行时都运行?或者它是否执行一次,将结果对象保存在内存中,然后只增加指向它正在使用的对象的指针?原因是getWorkItems 在幕后做了很多事情(比较、排序、其他查询),所以最好不要一遍又一遍地执行。如果是这种情况,那么我最好按照以下方式进行:
List<WorkItem> workload = p.getWorkItems(dateFrom, dateTo);
for (int i = 0; i < workload.Count; i++)
{
someFunction(workload[i]);
}
它是用 C# 编写的,但我假设答案将适用于大多数类似的语言..
【问题讨论】:
-
如果
p.getWorkItems每次都执行,那么in如何迭代结果?
标签: c# performance optimization loops