Скорость работы программы с потоками и без - C#

Узнай цену своей работы

Формулировка задачи:

Написал небольшую программу с потоками. Решил проверить как будет работать быстрее - с потоками или без. Если в двух словах: 1 функция, создаю 4 потока, запускаю их и по их завершению считаю время. Затем запускаю ту же самую функцию 4 раза без потоков. Оказывается, что без потоков быстрее (см. скрин)
class Program
    {
        static void Main(string[] args) //точка входа в программу 
        { //создаем 4 потока, в качестве параметров передаем имя Выполняемой функции 
           
            Stopwatch sw;
            for (int i = 0; i < 10; i++)
            {
                sw = new Stopwatch();
                sw.Start();
                Thread th_1 = new Thread(WriteString);
                Thread th_2 = new Thread(WriteString);
                Thread th_3 = new Thread(WriteString);
                Thread th_4 = new Thread(WriteString);
           
                // запускаем каждый поток, в качестве параметра передаем номер потока 
                th_1.Start("1"); th_2.Start("2"); th_3.Start("3"); th_4.Start("4");

                th_1.Join(); th_2.Join(); th_3.Join(); th_4.Join();
                sw.Stop();
                Console.WriteLine(sw.Elapsed);

            }
            Console.WriteLine();
            for (int i = 0; i < 10; i++)
            {
                sw = new Stopwatch();
                sw.Start();
                WriteString("1");
                WriteString("2");
                WriteString("3");
                WriteString("4");
                sw.Stop();
                Console.WriteLine("!"+sw.Elapsed);

            }
            Console.ReadKey();
        }
        static void WriteString(object _Data)
        {
            //для получения строки используем преобразование типов: // приводим переменную _Data к типу string и записываем // в переменную str_for_out 
            string str_for_out = (string) _Data; // теперь поток 1 тысячу раз выведит полученную строку (свой номер) 
            for (int i = 0; i <= 10; i++) Console.Write(str_for_out);
        }
Отсюда резонный вопрос - есть ли смысл использовать потоки, если мне нужно будет (не в этой программе, конечно) считать различные вещи (просто счётная математическая программа)

Решение задачи: «Скорость работы программы с потоками и без»

textual
Листинг программы
for (int i = 0; i <= 10; i++) Console.Write(str_for_out);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы