У меня вопрос по поводу метода Parallel.For
.
Я хочу провести сравнение между использованием от 1 до 4 потоков в алгоритме обработки изображений.Я настраиваю свой Parallel.For
следующим образом:
ParallelOptions po = new ParallelOptions();
po.MaxDegreeOfParallelism = 4;
Parallel.For(0, height - 1, po, y =>
{
int offset = y * stride; //row
for (int x = 0; x < width - 1; x++)
{
//do stuff here
}
});
Время считается Stopwatch
классом.
var stopwatch = Stopwatch.StartNew();
MethodWithParallelFor.Execute();
stopwatch.Stop();
Мой вопрос, почему, когда я настраиваю MaxDegreeOfParallelism
влюбое значение (мой процессор имеет 8 потоков) я получаю точно такое же время?Когда я устанавливаю Degree
в 1 или 4, я получаю одинаковое время выполнения.
Итак, как отладить Parallel.For
для получения информации, сколько потоков запущено в моем цикле?Как заставить программу использовать столько потоков, сколько я хочу?При необходимости я могу поделиться с моим полным кодом
Я реализовал мою тестовую программу в c # 7.3 и WPF 4.6.2