"타이트 루프"란 무엇입니까?
그 말을 많이 들었습니다. 무슨 뜻이에요?
예가 도움이 될 것입니다.
에서 위키 낱말 사전 :
- (컴퓨팅) 어셈블리 언어에서 명령어가 거의없고 여러 번 반복되는 루프입니다.
- (컴퓨팅) I / O 또는 처리 리소스를 많이 사용하여 운영 체제에서 실행되는 다른 프로그램과 적절히 공유하지 못하는 루프입니다.
사례 1의 경우 아마도
for (unsigned int i = 0; i < 0xffffffff; ++ i) {}
이 문구는 일반적으로 여러 번 반복되는 루프를 지정하는 데 사용되며 프로그램의 성능에 심각한 영향을 미칠 수 있습니다. 즉, 많은 CPU 사이클을 사용할 수 있습니다. 일반적으로 최적화에 대한 논의에서이 문구를 듣게됩니다.
예를 들어 루프가 화면의 모든 픽셀을 처리해야하는 게임이나 루프가 거대한 데이터 포인트 배열의 항목을 처리하는 과학 앱을 생각합니다.
비디오 Jon Skeet 및 Tony the Pony에 타이트 루프 (~ 무한 루프)의 좋은 예가 있습니다.
예는 다음과 같습니다.
while(text.IndexOf(" ") != -1) text = text.Replace(" ", " ");
이것은 IndexOf
유니 코드 폭이 0 인 문자를 Replace
무시하고 (따라서 두 개의 인접한 공백을 찾음) 이를 무시하지 않기 때문에 (인접한 공백을 대체하지 않기 때문에) 타이트한 루프를 생성합니다 .
다른 답변에는 이미 좋은 정의가 있으므로 다시 언급하지 않습니다.
타이트 루프는 CPU 캐시 친화적 인 루프입니다. 분기를 수행하지 않고 처리중인 데이터에 대한 메모리 가져 오기 대기 시간을 효과적으로 숨기는 명령 캐시에 맞는 루프입니다.
SandeepJ의 대답은 패킷을 처리하는 네트워크 어플라이언스 (예 : 미들 박스의 Wikipedia 항목 참조)의 컨텍스트에서 올바른 대답입니다. 타이트 루프를 실행하는 스레드 / 작업이 단일 CPU에서 예약 된 상태로 유지되고 컨텍스트가 전환되지 않도록 시도한다는 점을 추가하고 싶습니다.
Webster의 사전에 따르면 "다른 프로그램이나 운영 체제에 리소스를 해제하지 않고 실행되는 코드 루프"라고합니다.
http://www.websters-online-dictionary.org/ti/tight+loop.html
경험상, 예를 들어 다음과 같이 무한히 실행되는 루프를 수행하려는 경우 다음과 같은 것을 발견했습니다.
while(true)
{
//do some processing
}
이러한 루프는 항상 리소스를 많이 사용합니다. 이 루프를 사용하여 프로세스의 CPU 및 메모리 사용량을 확인하면 실행 된 것을 알 수 있습니다. 이것이 어떤 사람들은 "타이트 루프"라고 부르는 아이디어입니다.
참고 URL : https://stackoverflow.com/questions/2212973/what-is-a-tight-loop
'programing' 카테고리의 다른 글
구성 요소 당 하나의 파일 또는 구성 요소 당 여러 파일? (0) | 2020.11.21 |
---|---|
`__eq__`를 정의하는 유형은 해시 할 수 없습니까? (0) | 2020.11.21 |
Google Suggest API에 대한 문서는 어디에 있습니까? (0) | 2020.11.21 |
Ubuntu를 시작할 때 스크립트를 실행하는 방법은 무엇입니까? (0) | 2020.11.21 |
여러 프로세스에서 단일 파일 처리 (0) | 2020.11.21 |