Я ломаю голову над запуском параллельных потоков, поэтому решил протестировать его на меньшем количестве, а затем расширить, когда мне будет удобно. Я противопоставляю тот же процесс самому себе; один использует Parallel.For, а другой использует базовый цикл for. Я фиксирую время (в тиках) для сравнения. Пример кода берет массив (в данном случае 53 строки из двух символов) и заполняет заданный ListBox
массивом.
Что для меня практически не имеет смысла, так это то, что когда я запускаю базовый цикл For, он дает в среднем 1400 тиков, но когда я запускаю цикл Parallel.For
, он возвращает в среднем 5200 тиков. Не слишком ли мал размер выборки для того, чтобы параллель была эффективной?
Вот два фрагмента, которые я использую. Цикл Parallel.For
:
public void ListboxFromArray(ListBox listbox, string[] array1)
{
// This method takes an array and fills a listbox full of items from the array
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
Parallel.For(0, array1.Count(),
index =>
{
listbox.Items.Add(array1[index]);
});
stopWatch.Stop();
long ts = stopWatch.ElapsedTicks;
string elapsedTime = ts.ToString() + " Ticks"; ;
MessageBox.Show(elapsedTime);
}
и цикл for
:
public void ListboxFromArray(ListBox listbox, string[] array1)
{
// This method takes an array and fills a listbox full of items from the array
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (int i = 0; i < array1.Count(); i++)
{
listbox.Items.Add(array1[i]);
}
stopWatch.Stop();
long ts = stopWatch.ElapsedTicks;
string elapsedTime = ts.ToString() + " Ticks"; ;
MessageBox.Show(elapsedTime);
}
Спасибо за любой вклад или подтверждение моих мыслей заранее.