Прогноз производительности
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2023 г. ) |
В информатике промахов прогнозирование производительности означает оценку времени выполнения или других факторов производительности (например, в кэше ) программы на данном компьютере. Он широко используется компьютерными архитекторами для оценки новых компьютерных проектов, авторами компиляторов для изучения новых оптимизаций, а также продвинутыми разработчиками для настройки своих программ.
Существует множество подходов к прогнозированию производительности программы на компьютерах. Их можно условно разделить на три основные категории:
- прогнозирование на основе моделирования
- прогнозирование на основе профиля
- аналитическое моделирование
Прогнозирование на основе моделирования
[ редактировать ]Данные о производительности могут быть получены непосредственно из компьютерных симуляторов , в которых каждая инструкция целевой программы фактически динамически выполняется с учетом определенного набора входных данных. Симуляторы могут очень точно прогнозировать производительность программы, но обработка больших программ требует значительного времени. Примеры включают ПАСЕ [ 1 ] и симуляторы аэродинамической трубы Висконсина [ 2 ] а также более поздний набор инструментов моделирования WARPP, [ 3 ] который пытается значительно сократить время, необходимое для моделирования параллельной системы.
Другой подход, основанный на моделировании на основе трассировки, не запускает каждую инструкцию, а запускает файл трассировки, в котором хранятся только важные программные события. Этот подход теряет некоторую гибкость и точность по сравнению с моделированием с точностью до цикла, упомянутым выше, но может быть намного быстрее. Генерация трассировок часто требует значительных объемов дискового пространства и может серьезно повлиять на время выполнения приложений, если во время выполнения записывается большой объем данных.
Прогноз на основе профиля
[ редактировать ]Классический подход к прогнозированию производительности рассматривает программу как набор базовых блоков, связанных путем выполнения. Таким образом, время выполнения всей программы представляет собой сумму времени выполнения каждого базового блока, умноженную на частоту его выполнения, как показано в следующей формуле:
Частоты выполнения базовых блоков генерируются профилировщиком , поэтому этот метод называется прогнозированием на основе профиля. Время выполнения базового блока обычно получается с помощью простого планировщика инструкций.
Классическое прогнозирование на основе профилей хорошо работало для первых однозадачных процессоров с упорядоченным выполнением, но не позволяло точно предсказать производительность современных процессоров. Основная причина заключается в том, что современные процессоры могут выдавать и выполнять несколько инструкций одновременно, иногда не в исходном порядке и пересекая границу базовых блоков.