programing

"타이트 루프"란 무엇입니까?

nasanasas 2020. 11. 21. 11:19
반응형

"타이트 루프"란 무엇입니까?


그 말을 많이 들었습니다. 무슨 뜻이에요?

예가 도움이 될 것입니다.


에서 위키 낱말 사전 :

  1. (컴퓨팅) 어셈블리 언어에서 명령어가 거의없고 여러 번 반복되는 루프입니다.
  2. (컴퓨팅) 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

반응형