У меня есть приложение, реализованное в WinForms, которое обрабатывает ~ 7800 URL-адресов примерно за 5 минут (загружает URL-адрес, анализирует контент, ищет определенные фрагменты данных и, если находит то, что ищет, выполняет некоторую дополнительную обработку этого данные.
Это конкретное приложение раньше работало от 26 до 30 минут, но, изменив код на TPL (Task Parallel Library в .NET v4.0), оно выполняется всего за 5. Компьютер представляет собой рабочую станцию Dell T7500 с двухъядерные процессоры Xeon (3 ГГц), работающие с 24 ГБ ОЗУ, и 64-разрядная версия Windows 7 Ultimate.
Хотя, это не совсем то же самое, что и ваша ситуация, это тоже очень интенсивно. Документация по TPL гласит, что она изначально была задумана для проблемных наборов, связанных с процессором, но это не исключает ее использования в ситуациях ввода-вывода (как показывает мое приложение). Если у вас есть как минимум 4 ядра, и вы не видите значительного сокращения времени обработки, возможно, у вас есть другие проблемы с реализацией, которые не позволяют TPL быть действительно эффективным (блокировки, элементы жесткого диска и т. Д.). Книга «Параллельное программирование в Microsoft .NET» действительно помогла мне понять, «как» нужно изменить ваш код, чтобы действительно использовать все эти возможности.
Стоит взглянуть на мой взгляд.