Причины параллельного расширения работают медленно
Я пытаюсь сделать мое вычислительное приложение быстрее, используя Parallel Extensions. Я новичок в этом, поэтому я только что заменил основной цикл foreach на Parallel.ForEach. Но расчет стал медленнее. Какие могут быть общие причины снижения производительности параллельных расширений?
Спасибо
1 ответ
Вы добьетесь улучшения только при параллельном выполнении ряда условий. Во-первых, почему вы могли ожидать увеличения скорости?
Случаи, когда можно ожидать повышения производительности, например,
- Если у вас есть последовательные операции, ожидающие на ресурсе, например, создание TCP-соединений с сервером и загрузка данных, параллельное выполнение этого может быть быстрее.
- Если у вас несколько процессоров / ядер, может быть быстрее выполнить каждую задачу на ядре, вместо того чтобы использовать 100% одного ядра и ни одного из других.
Если у вас одно ядро и множество мелких операций, дополнительная работа, необходимая для переключения контекста и выделения ресурсов, необходимых для управления параллельными потоками, может перевесить преимущества.
Если вы описываете ваш конкретный случай, мы можем попытаться предположить, почему он медленнее в вашем примере.
На самом деле запись WikiPedia о параллельных вычислениях содержит некоторую хорошую информацию об этом, см. На http://en.wikipedia.org/wiki/Parallel_computing
Вы хотите обратить особое внимание на закон Амдала.