* Обратите внимание, что я просто пытаюсь понять это.
Я пытаюсь использовать все ядра моего компьютера методом Parallel.For()
. Это работает просто отлично, но когда я пытаюсь использовать тот же метод с обычным циклом for, он идет намного быстрее. Параллельный метод занимает 16 секунд, а обычный метод - только 6 секунд.
Я надеюсь, что вы можете сказать мне, что я делаю здесь неправильно.
Обновленный код
DateTime parallelStart = new DateTime();
DateTime parallelFinish = new DateTime();
DateTime singeStart = new DateTime();
DateTime singeFinish = new DateTime();
parallelStart = DateTime.Now;
int inputData = 0;
Parallel.For(0, 1000000000, i =>
{
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
});
parallelFinish = DateTime.Now;
singeStart = DateTime.Now;
for (int i = 0; i < 1000000000; i++)
{
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
inputData = inputData++;
}
singeFinish = DateTime.Now;
MessageBox.Show("Parallel execution time: " + (parallelFinish - parallelStart).Seconds + "\n" +
"Singe execution time: " + (singeFinish - singeStart).Seconds);
Первый код:
DateTime parallelStart = new DateTime();
DateTime parallelFinish = new DateTime();
DateTime singeStart = new DateTime();
DateTime singeFinish = new DateTime();
parallelStart = DateTime.Now;
Parallel.For(0, 2000000000, i =>
{
var inputData = 0;
});
parallelFinish = DateTime.Now;
singeStart = DateTime.Now;
for (int i = 0; i < 2000000000; i++)
{
var inputData = 0;
}
singeFinish = DateTime.Now;
MessageBox.Show("Parallel execution time: " + (parallelFinish - parallelStart).Seconds + "\n" + "Singe execution time: " + (singeFinish - singeStart).Seconds);