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