![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
Нахождение простых чисел с использованием PLINQ в Visual Studio 201012.04.2010 12:03
В математике число называется простым, если оно делится только на 1 и себя. Список первых двадцати пяти простых чисел выглядит таким образом: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 Следующий код (с использованием LINQ) находит все простые числа от 2 до указанного числа max: Func<int, IEnumerable<int>> primeNumbers = max => IEnumerable<int> result = primeNumbers(10); foreach(int i in result) Если выполнить этот код, то получим в результате 4 простых числа в диапазоне от 2 до 10 включительно - {2, 3, 5, 7}. Если у вас имеется компьютер с двухядерным процессором, то можно заставить выполняться ваши LINQ-выражения параллельно на двух ядрах. Для этого можно использовать технологию PLINQ, которая доступна в Visual Studio 2010. Для программиста процесс адаптации кода для работы на разных ядрах в данном очень простой - для этого необходимо использовать метод метод-расширение AsParallel() так, как это показано в следующем коде: Func<int, IEnumerable<int>> primeNumbers = max => IEnumerable<int> result = primeNumbers(10); Давайте рассмотрим, как влияет распараллеливание задачи на время работы. Для этого решим задачу нахождения простых чисел в диапазоне от 2 до 50000. Напишем следующий код: IEnumerable<int> result = PrimeNumbers(50000); Stopwatch stopWatch = newStopwatch(); Результаты:
В результате мы получим все тот же результат, но за меньшее время (не в два раза, как это можно было бы предположить, так как еще нужно дополнительное время для инициализации потоков, поэтому для маленьких задач время параллельного выполнения может быть больше обычного). В Visual Studio 2010 появилось новое окно "Parallel Stacks", в котором отображаются все потоки и задачи, а также дается информация о том, где эти потоки или задачи выполняются:
Можно увидеть, что каждый поток ответственный за свой диапазон чисел, в данном случае первый поток обрабатывает число 32983, а второй - 33073 и все это происходит в асинхронном режиме. Кроме того, в Visual Studio 2010 появилось новое окно "Parallel Tasks", с помощью которого можно проводить отладку потоков и получить другую необходимую информацию:
Для более детального изучения PLINQ рекомендуется скачать Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4. Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |