Использование распараллеливания для относительно больших циклов

У меня 8-ядерный процессор с 8 ГБ памяти. Логически следующий код может выполняться параллельно, но поскольку цикл предоставляет более чем достаточно возможностей для параллелизма, так как у меня доступно гораздо меньше ядер, чем размер цикла. Во-вторых, каждое выражение делегата выделяет некоторую память для хранения свободных переменных. Рекомендуется ли использовать параллельный for в этом случае?

также разделение 2 параллельных for на 2 задачи улучшит производительность в этом случае ??

     private static void DoWork()
    {

        int end1 = 100; // minimum of 100 values; 
        int end2 = 100; // minimum of 100 values;


        Task a = Task.Factory.StartNew(
            delegate
            {
                Parallel.For(0, end1, delegate(int i)
                {
                    // independent work                     
                });
            }
        );

        Task b = Task.Factory.StartNew(
            delegate
            {
                Parallel.For(0, end2, delegate(int i)
                {
                    // independent work                        
                });
            }
        );

        a.Wait();
        b.Wait();         
    }
1
задан BlackWasp 22 July 2012 в 14:51
поделиться