Я знаю, что несколько человек задали вопрос, похожий на этот вопрос, но я не могу найти ответ, который заставит меня понять, почему он медленнее.
Итак, я сделал небольшую консольную программу для собственного понимания объекта потоковой обработки в Visual Studio 2013. Мой процессор - это Intel Core i7, который может использовать несколько потоков.
Мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static TimeSpan MTTime;
static TimeSpan STTime;
static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
Console.WriteLine(Environment.NewLine + "---------------Multi Process-------------" + Environment.NewLine);
Thread th1 = new Thread(new ParameterizedThreadStart(Process));
Thread th2 = new Thread(new ParameterizedThreadStart(Process));
Thread th3 = new Thread(new ParameterizedThreadStart(Process));
Thread th4 = new Thread(new ParameterizedThreadStart(Process));
th1.Start("A");
th2.Start("B");
th3.Start("C");
th4.Start("D");
th1.Join();
th2.Join();
th3.Join();
th4.Join();
stopwatch.Stop();
MTTime = stopwatch.Elapsed ;
Console.WriteLine(Environment.NewLine + "---------------Single Process-------------" + Environment.NewLine);
stopwatch.Reset();
stopwatch.Start();
Process("A");
Process("B");
Process("C");
Process("D");
stopwatch.Stop();
STTime = stopwatch.Elapsed;
Console.Write(Environment.NewLine + Environment.NewLine + "Multi : "+ MTTime + Environment.NewLine + "Single : " + STTime);
Console.ReadKey();
}
static void Process(object procName)
{
for (int i = 0; i < 100; i++)
{
Console.Write(procName);
}
}
}
}
Изображение результатов:
Мы можем ясно видеть, что процесс многопроцессорности является полным случайным, а единственный - просто нажимает друг на друга, но я не думаю, что это влияет на скорость.
Сначала я думал, что мой поток просто больше, чем процесс, необходимый для запуска программы, но после изменения для более крупного процесса одиночный шаг по-прежнему был самым быстрым в большой степени. Итак, пропустите ли я концепцию многопоточности? Или это нормально, что медленнее?