Информация об изменениях

Сообщение Re[2]: распараллеливание и ресурсоёмкость от 16.04.2019 15:42

Изменено 16.04.2019 15:50 VVVa

Re[2]: распараллеливание и ресурсоёмкость
Здравствуйте, bzig, Вы писали:

VYR>>на С# паралелил при помощи Parallel.For — какая-то жуть — накидывает 5% нагрузки в лучшем случае


B>Как у тебя ThreadPool настроен? Что возвращают GetAvailableThreads/GetMaxThreads ?


B>https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool?redirectedfrom=MSDN&view=netframework-4.7.2



            int aworkerThreads;
            int acompletionPortThreads;
            ThreadPool.GetAvailableThreads(out aworkerThreads,out acompletionPortThreads);
            int mworkerThreads;
            int mcompletionPortThreads;
            ThreadPool.GetMaxThreads(out mworkerThreads, out mcompletionPortThreads);


aworkerThreads 1023 int
acompletionPortThreads 1000 int
mworkerThreads 1023 int
mcompletionPortThreads 1000 int
Re[2]: распараллеливание и ресурсоёмкость
Здравствуйте, bzig, Вы писали:

VYR>>на С# паралелил при помощи Parallel.For — какая-то жуть — накидывает 5% нагрузки в лучшем случае


B>Как у тебя ThreadPool настроен? Что возвращают GetAvailableThreads/GetMaxThreads ?


B>https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool?redirectedfrom=MSDN&view=netframework-4.7.2



            int aworkerThreads;
            int acompletionPortThreads;
            ThreadPool.GetAvailableThreads(out aworkerThreads,out acompletionPortThreads);
            int mworkerThreads;
            int mcompletionPortThreads;
            ThreadPool.GetMaxThreads(out mworkerThreads, out mcompletionPortThreads);


aworkerThreads 1023 int
acompletionPortThreads 1000 int
mworkerThreads 1023 int
mcompletionPortThreads 1000 int


пробовал даже так — все ровно ощутимая добавка к загрузке


            ParallelOptions po=new ParallelOptions();
            po.MaxDegreeOfParallelism=4;
            Parallel.For(0, no_channel,po,(Action<int>)((i) => {
                tmp[i] = new double[no_point];
                fs[i].Next(ref tmp[i], src); 
            }));