Скорость работы программы с потоками и без - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д