Что такое производительность?
- Сокращение времени на получение результата
- Увеличение частоты вычислений для получения серии результатов
- Снижение энергопотребления на вычисления
Все эти пункты относятся к производительности и их мы можем достичь через параллелизацию приложения.
При создании приложения мы должны определить цели. Какие показатели приложения мы хотим достичь. Эти показатели мы должны достигать итеративно, пока не достигнем намеченных целей.
Очень важная часть процесса оптимизации это процесс проверки приложения после каждого изменения. Быстрые вычисления и неправильный результат нам не нужны. Поэтому процесс проверки не позволит вам потратить время впустую на оптимизацию уже сломанного приложения.
К проверке приложения следует подходить очень осторожно. Достижение такого же результата для параллельных приложений в некоторых областях может быть трудно достижимо.
В ходе оптимизации нужно всегда отслеживать производительность для мониторинга достижения наших целей. Мы можем замерять производительность определённой конфигурации оборудования или с помощью аналитических моделей. Моделирование можно произвести с помощью инструмента Valgrind для Linux систем. Оба варианта достаточно хороши. Замеры могут показать почему производительность не может быть улучшена или почему она ограничена. Иногда аналитические оценки алгоритмов могут не учитывать очень важный для параллельных приложений факт как масштабируемость. Я рекомендую руководствоваться аналитическими оценками алгоритмов для выбора того или иного алгоритма. После реализации выбранного алгоритма проводить замеры, что бы понять какие эффекты проигнорировали аналитические оценки.
Очень важные две метрики, характеризующие производительность и параллелизм, ускорение и эффективность.
Ускорением параллельного алгоритма называют отношение времени выполнения последовательного алгоритма к времени выполнения параллельного алгоритма.
Эффективность это ускорение поделённое на число параллельных потоков. Она измеряет окупаемость инвестиции в оборудование. Идеальная эффективность это 1 (чаще говорят 100%), она соответствует линейному ускорению. На практике, множество факторов делают эффективность ниже идеальной.