stringtranslate.com

Горячая точка (компьютерное программирование)

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

Если программа прерывается случайным образом, счетчик программы ( указатель на следующую выполняемую команду) часто содержит адрес инструкции в определенном диапазоне, что может указывать на код, нуждающийся в оптимизации, или даже на наличие «плотного» цикла ЦП . Этот простой метод позволяет обнаружить часто используемые инструкции, хотя более сложные методы, такие как симуляторы набора команд или анализаторы производительности , позволяют добиться этого более точно и последовательно.

История обнаружения горячих точек

Ученый -компьютерщик Дональд Кнут описал свою первую встречу с тем, что он называет следом прыжка, в интервью журналу Dr. Dobb's Journal в 1996 году, сказав:

В 60-х годах кто-то изобрел концепцию «следа перехода». Это был способ изменить машинный язык программы так, чтобы она меняла инструкцию следующего перехода или перехода , чтобы сохранить контроль, чтобы вы могли выполнять программу с довольно высокой скоростью вместо того, чтобы интерпретировать каждую инструкцию по одной и записывать ее в файл. именно там, где программа отклонялась от последовательности. Обработав этот файл, вы смогли выяснить, где программа проводит большую часть времени. Итак, в первый же день, когда у нас было запущено это программное обеспечение, мы применили его к нашему компилятору Фортрана, предоставленному, я полагаю, в те дни компанией Control Data Corporation . Мы обнаружили, что он тратит 87 процентов своего времени на чтение комментариев ! Причина заключалась в том, что он переводил из одной кодовой системы в другую. [1]

Итерация

Приведенный выше пример служит иллюстрацией того, что эффективное обнаружение горячих точек часто является итеративным процессом и, возможно, его следует выполнять всегда (вместо того, чтобы просто признавать, что программа работает разумно). После устранения всей посторонней обработки (просто путем удаления всех встроенных комментариев) новый анализ времени выполнения позволит более точно обнаружить «настоящие» горячие точки в переводе. Если бы вообще не было обнаружено никаких горячих точек, программа вполне могла бы потреблять гораздо больше ресурсов, чем необходимо, возможно, в течение многих лет на многочисленных машинах, причем никто никогда не осознавал этого полностью.

Моделирование набора команд в качестве детектора горячих точек

Симулятор набора команд можно использовать для подсчета каждого времени выполнения конкретной инструкции и последующего создания либо экранного дисплея, либо печатного списка программ (с подсчетом и/или процентами от общей длины пути инструкции ), либо отдельного отчета, показывающего точные данные. где имело место наибольшее количество инструкций. Это дает лишь относительное представление о «горячих точках» (с точки зрения шага инструкции), поскольку большинство инструкций на многих машинах имеют разные тайминги. Тем не менее, он обеспечивает меру часто используемого кода, которая сама по себе весьма полезна при настройке алгоритма.

Смотрите также

Рекомендации

  1. Джек Вёр: Интервью с Дональдом Кнутом, апрель 1996 г.