Сегодня я попытался сделать некоторую оптимизацию для оператора foreach, который работает на XDocument.
Перед оптимизацией:
foreach (XElement elem in xDoc.Descendants("APSEvent").ToList())
{
//some operations
}
После оптимизации:
Parallel.ForEach(xDoc.Descendants("APSEvent").ToList(), elem =>
{
//same operations
});
Я увидел, что .NET в Parallel.ForEach(...) открыт ТОЛЬКО один поток! В результате временной интервал Parallel был больше стандартного foreach.
Почему вы думаете, что .NET только открыл 1 поток? Из-за блокировки файла? Благодаря