Причины параллельного расширения работают медленно

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

Спасибо

1 ответ

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

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

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

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

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

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

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

Другие вопросы по тегам