핫 스폿(컴퓨터 프로그래밍)
Hot spot (computer programming)이 글은 검증을 위해 인용구가 추가로 필요하다. – · · · · (2009년 5월) (이 템플릿 하는 |
컴퓨터 과학의 핫 스팟은 대개 실행 명령의 높은 비율이 발생하거나 프로그램 실행 중에 대부분의 시간을 소비하는 컴퓨터 프로그램의 영역으로 정의된다(일부 명령이 다른 명령보다 빠르므로 반드시 같은 것은 아니다).
프로그램이 무작위로 중단되는 경우 프로그램 카운터(실행할 다음 지시사항에 대한 포인터)가 특정 범위 내에서 명령의 주소를 포함하는 경우가 빈번하게 발견되는데, 이는 최적화가 필요한 코드를 나타내거나 심지어 '긴축된' CPU 루프의 존재를 나타내는 것일 수도 있다.명령 집합 시뮬레이터나 성능 분석기와 같은 좀 더 정교한 방법이 더 정확하고 일관성 있게 이를 달성하기는 하지만 이 간단한 기술은 고도로 사용되는 지시사항을 탐지할 수 있다.
핫 스폿 감지 이력
컴퓨터 과학자 도날드 크누스는 1996년 닥터 도브스 저널 인터뷰에서 자신이 언급하는 점프 트레이스라고 하는 것을 처음 접하게 된 것을 다음과 같이 묘사했다.
60년대에 누군가 '점프 트레이스'라는 개념을 발명했다.이것은 프로그램의 기계 언어를 변경하여 제어력을 유지하기 위해 다음 분기나 점프 명령을 변경하여 각 명령을 한 번에 하나씩 해석하는 대신 상당히 빠른 속도로 프로그램을 실행하고 프로그램이 순차적으로 분리된 바로 그 파일에 기록할 수 있는 방법이었다.이 파일을 처리하면 프로그램이 대부분의 시간을 어디에 소비하는지 알 수 있다.그래서 이 소프트웨어를 실행한 첫날, 우리는 이 소프트웨어를 Fortran 컴파일러에 적용했습니다, 제 생각에 그 당시는 Control Data Corporation이었습니다.우리는 그것이 87%의 시간을 댓글을 읽는데 쓰고 있다는 것을 알아냈어!그 이유는 그것이 하나의 코드 체계에서 다른 코드 체계로 번역하고 있기 때문이었다.[1]
반복
위의 예는 효과적인 핫 스폿 검출이 종종 반복적인 과정이고 아마도 항상 수행되어야 하는 과정(프로그램이 합리적으로 수행되고 있다는 것을 단순히 받아들이는 대신)이라는 것을 보여준다.(예를 들어, 포함된 모든 코멘트를 제거하는 것만으로) 모든 관련 없는 처리를 제거한 후, 새로운 런타임 분석은 번역에서 "진정한" 핫 스팟을 더 정확하게 감지할 수 있을 것이다.만일 핫 스폿 감지가 전혀 일어나지 않았다면, 이 프로그램은 아마도 수많은 기계에서 수 년 동안 필요 이상으로 엄청난 자원을 소비했을 것이며, 아무도 이것을 완전히 알지 못했을 것이다.
핫 스폿 디텍터로서의 명령 집합 시뮬레이션
특정 명령이 실행될 때마다 명령 집합 시뮬레이터를 사용하여 나중에 화면 디스플레이, 인쇄 프로그램 목록(총 명령 경로 길이의 카운트 및/또는 백분율 포함) 또는 별도의 보고서를 생성하여 가장 많은 수의 명령이 수행된 위치를 정확하게 표시할 수 있다.대부분의 지침서는 많은 기계에서 서로 다른 시간을 가지기 때문에 (지침 단계의 관점에서) 핫 스팟의 상대적인 보기만 제공한다.그럼에도 불구하고 그것은 알고리즘을 조정할 때 그 자체로 상당히 유용한 코드와 고도로 사용된 코드의 척도를 제공한다.