Время многопоточного выполнения функции - 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();