Причины параллельного расширения работают медленно - PullRequest
1 голос
/ 28 мая 2010

Я пытаюсь ускорить вычисление с помощью Parallel Extensions. Я новичок в этом, поэтому я только что заменил основной цикл foreach на Parallel.ForEach. Но расчет стал медленнее. Какие могут быть общие причины снижения производительности параллельных расширений?

Спасибо

1 Ответ

1 голос
/ 28 мая 2010

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

Случаи, когда можно ожидать повышения производительности, например:

  1. Если у вас есть последовательные операции, ожидающие на ресурсе, например, создание TCP-подключений к серверу и загрузка данных, это может быть быстрее в параллельном режиме.
  2. Если у вас несколько процессоров / ядер, может быть быстрее выполнить каждую задачу на ядре, вместо того чтобы использовать 100% одного ядра и ни одного из других.

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

Если вы описываете ваш конкретный случай, мы можем попытаться предположить, почему он медленнее в вашем примере.

На самом деле, запись WikiPedia о параллельных вычислениях содержит некоторую хорошую информацию по этому вопросу, см. http://en.wikipedia.org/wiki/Parallel_computing

Вы хотите обратить особое внимание на закон Амдала.

...