Время многопоточного выполнения функции - C#
Формулировка задачи:
Этот код исполняется за 0.4 сек на моём компьюетере
Я вызываю 10 раз foo в потоке и надеюсь, они выполнятся за время соизмеримым со временем выполнения Foo
breakpoint1
breakpoint2
Однако время выполнения строк между breakpoint1 и breakpoint2 = около 2 сек. это для меня долго, нужно около 0.5 сек.
Мои предположения: что кроме этих потоков планировщик обрабатывает и другие. Поправьте если я неправ и помогите добиться нужной скорости.
private void Foo() { for (int i = 0; i < 100000000; i++) { } }
new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start(); new Thread(() => { Foo(); }).Start();
Решение задачи: «Время многопоточного выполнения функции»
textual
Листинг программы
var stat = new Dictionary<System.Diagnostics.ThreadState, int>(); foreach (System.Diagnostics.ThreadState state in Enum.GetValues(typeof(System.Diagnostics.ThreadState))) { stat.Add(state, 0); } foreach (var proc in Process.GetProcesses()) { foreach (var grp in proc.Threads .Cast<ProcessThread>() .Select(t => t.ThreadState) .GroupBy(state => state)) { stat[grp.Key] += grp.Count(); } } //stat.Dump();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д