WikiDer > Горячая точка (компьютерное программирование)
Эта статья нужны дополнительные цитаты для проверка. (Май 2009 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
А горячая точка в Информатика чаще всего определяется как область компьютерная программа там, где происходит высокая доля выполняемых инструкций или где большая часть времени тратится на выполнение программы (не обязательно то же самое, поскольку одни инструкции быстрее других).
Если программа останавливается случайным образом, счетчик команд (в указатель к следующей инструкции, которая должна быть выполнена) часто содержит адрес инструкции в определенном диапазоне, что, возможно, указывает на код, который нуждается в оптимизации, или даже указывает на наличие `` жесткой '' ЦПУ петля. Этот простой метод на самом деле может использоваться как метод обнаружения часто используемых инструкций, хотя и несколько более сложных методов, таких как симуляторы набора команд или же анализаторы производительности, добивайтесь этого более точно и последовательно.
История обнаружения горячих точек
В специалист в области информатики Дональд Кнут описал свою первую встречу с тем, что он называет след прыжка в интервью для Журнал доктора Добба в 1996 году, говоря:
В 60-х годах кто-то изобрел концепцию «следа прыжка». Это был способ изменить машинный язык программы, чтобы изменить следующую ветвь или инструкция по прыжкам чтобы сохранить контроль, чтобы вы могли выполнять программу с довольно высокой скоростью, вместо того, чтобы интерпретировать каждую инструкцию по одной за раз и записывать в файл именно то место, где программа отклонилась от последовательности. Обрабатывая этот файл, вы могли выяснить, где программа проводила большую часть своего времени. Итак, в первый день работы этого программного обеспечения мы применили его к нашему Фортран компилятор поставлял, я полагаю, это было в те дни, Корпорация Control Data. Мы выяснили, что 87% времени он тратит на чтение Комментарии! Причина заключалась в том, что он переводил одну кодовую систему из другой в другую.[1]
Итерация
Приведенный выше пример служит для иллюстрации того, что эффективное обнаружение горячих точек часто является итеративный процесс и, возможно, тот, который всегда следует выполнять (вместо того, чтобы просто признать, что программа работает разумно). После устранения всей посторонней обработки (например, просто путем удаления всех встроенных комментариев) новый анализ времени выполнения более точно обнаружит «настоящие» горячие точки в переводе. Если бы обнаружение горячих точек вообще не происходило, программа вполне могла бы потреблять гораздо больше ресурсов, чем необходимо, возможно, в течение многих лет на множестве машин, и никто никогда не знал об этом.
Моделирование набора команд в качестве детектора горячих точек
An симулятор набора команд может использоваться для подсчета каждый раз, когда выполняется конкретная инструкция, а затем для создания либо отображения на экране, либо распечатанного списка программ (со счетами и / или процентами от общего длина пути инструкции) или отдельный отчет, точно показывающий, где было выполнено наибольшее количество инструкций. Это только обеспечивает относительный вид горячих точек (с точки зрения шага инструкций), поскольку большинство инструкций имеют разное время на многих машинах. Тем не менее, он обеспечивает некоторую долю часто используемого кода, который сам по себе весьма полезен при настройке алгоритма.