for循环比HtmlAgility Pack中的foreach循环慢5-6倍

时间:2011-05-18 18:25:01

标签: html-agility-pack

我使用相同的值和代码测试2个循环: 1)For循环:

for (int i = 0; i < MyGlobals.check1Count; i++)
{
addToMyGlobals(root2.SelectNodes(strXPath)[i].OuterHtml.Trim(), XPathArrayIndex);
}

2)Foreach循环:

        foreach (HtmlNode link1 in root2.SelectNodes(strXPath))
        {
          addToMyGlobals(link1.OuterHtml.Trim(), XPathArrayIndex);
        }

结果是'Foreach循环'比'For循环'快5-6倍。为什么会发生什么,有人会给出解释呢?

1 个答案:

答案 0 :(得分:0)

在for循环中,您在循环的每次迭代中执行昂贵的SelectNodes()方法。 foreach循环只执行一次。