Прогноз производительности - Performance prediction

В Информатика, прогноз производительности средства для оценки времени выполнения или других факторов производительности (например, тайник промахи) программы на данном компьютере. Он широко используется компьютерными архитекторами для оценки новых компьютерных проектов, для компилятор писателям, чтобы исследовать новые возможности оптимизации, а также опытным разработчикам для настройки своих программ.

Существует множество подходов к прогнозированию производительности программы на компьютере. Их можно условно разделить на три основные категории:

  • прогнозирование на основе моделирования
  • прогнозирование на основе профиля
  • аналитическое моделирование

Прогнозирование на основе моделирования

Данные о производительности можно получить непосредственно с компьютера. тренажеры, в котором каждая инструкция целевой программы фактически динамически выполняется при заданном наборе входных данных. Симуляторы могут очень точно предсказать производительность программы, но для обработки больших программ требуется значительное время. Примеры включают ШАГ и Висконсинская аэродинамическая труба симуляторы, а также более новые WARPP набор инструментов для моделирования, который пытается значительно сократить время, необходимое для моделирования параллельной системы.

Другой подход, основанный на трассированное моделирование не выполняет все инструкции, а запускает файл трассировки, в котором хранятся только важные программные события. Этот подход теряет некоторую гибкость и точность по сравнению с симуляцией с точностью до цикла, упомянутой выше, но может быть намного быстрее. Создание трассировок часто требует значительного объема дискового пространства и может серьезно повлиять на время выполнения приложений, если во время выполнения записывается большой объем данных.

Прогнозирование на основе профиля

Классический подход к прогнозированию производительности рассматривает программу как набор базовые блоки связаны по пути выполнения. Таким образом, время выполнения всей программы - это сумма времени выполнения каждого базового блока, умноженная на его частоту выполнения, как показано в следующей формуле:

Частоты выполнения базовых блоков генерируются из профайлер, поэтому этот метод называется прогнозированием на основе профиля. Время выполнения базового блока обычно получается из простого планировщика инструкций.

Классическое прогнозирование на основе профилей хорошо работало для ранних процессоров с одной проблемой и упорядоченным выполнением, но не в состоянии точно предсказать производительность современных процессоров. Основная причина в том, что современные процессоры могут выдавать и выполнять несколько инструкций одновременно, иногда не в исходном порядке и пересекая границы базовых блоков.