для цикла в 5-6 раз медленнее цикла foreach в пакете HtmlAgility - PullRequest
0 голосов
/ 18 мая 2011

Я тестирую 2 цикла с одинаковыми значениями и кодом: 1) Для цикла:

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

2) цикл по каждому элементу:

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

В результате «цикл по каждому элементу» в 5-6 раз быстрее, чем «по циклу». Почему это то, что происходит, может ли кто-нибудь объяснить это?

1 Ответ

0 голосов
/ 18 мая 2011

В вашем цикле for вы выполняете дорогой метод SelectNodes () на каждой итерации цикла.Цикл foreach делает это только один раз.

...