Читаем C# 4.0 полное руководство - 2011 полностью

Parallel.For(0, data.Length, (i) => data[i] = i );

sw.Stop ;

Console.WriteLine("Параллельно выполняемый цикл инициализации: " +

"{0} секунд", sw.Elapsed.TotalSeconds);

sw.Reset ; sw.Start ;

// Последовательный вариант инициализации массива в цикле, for(int i=0; i < data.Length; i++) data[i] = i;

sw.Stop ;

Console.WriteLine("Последовательно выполняемый цикл инициализации: " +

"{0} секунд", sw.Elapsed.TotalSeconds);

// Выполнить преобразования, sw.Start;

// Параллельный вариант преобразования данных в цикле.

Parallel.For(0, data.Length, MyTransform);

sw.Stop;

Console.WriteLine("Параллельно выполняемый цикл преобразования: " +

"{0} секунд", sw.Elapsed.TotalSeconds);

sw.Reset ; sw.Start;

// Последовательный вариант преобразования данных в цикле, for(int i=0; i < data.Length; i++) MyTransform(i);

sw.Stop ;

Console.WriteLine("Последовательно выполняемый цикл преобразования: " +

"{0} секунд", sw.Elapsed.TotalSeconds);

Console.WriteLine("Основной поток завершен.");

}

}

При выполнении этой программы на двухъядерном компьютере получается следующий результат.

Основной поток запущен.

Параллельно выполняемый цикл инициализации: 1.0537757 секунд Последовательно выполняемый цикл инициализации: 0.3457628 секунд

Параллельно выполняемый цикл преобразования: 4.2246675 секунд Последовательно выполняемый цикл преобразования: 5.3849959 секунд Основной поток завершен.

Прежде всего, обратите внимание на то, что параллельный вариант цикла инициализации массива данных выполняется приблизительно в три раза медленнее, чем последовательный. Дело в том, что в данном случае на операцию присваивания расходуется так мало времени, что издержки на дополнительно организуемое распараллеливание превышают экономию, которую оно дает. Обратите далее внимание на то, что параллельный вариант цикла преобразования данных выполняется быстрее, чем последовательный. В данном случае экономия от распараллеливания с лихвой возмещает издержки на его дополнительную организацию.

ПРИМЕЧАНИЕ

Как правило, в отношении преимуществ, которые дает распараллеливание различных видов циклов, следует руководствоваться текущими рекомендациями корпорации Microsoft. Кроме того, необходимо убедиться в том, что распараллеливание цикла действительно приводит к повышению производительности, прежде чем использовать такой цикл в окончательно выпускаемом прикладном коде.

Что касается приведенной выше программы, то необходимо упомянуть о двух других ее особенностях. Во-первых, обратите внимание на то, что в параллельно выполняемом цикле для инициализации данных применяется лямбда-выражение, как показано ниже.

Parallel.For(0, data.Length, (i) => data[i] = i );

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT